home *** CD-ROM | disk | FTP | other *** search
/ Amiga CD-Sensation: Golden Games / Amiga CD-Sensation - Ausgabe 2 - Golden Games (1996)(GTI - Schatztruhe)(DE)[!].iso / Adventurer's / ACS / source / befehle < prev    next >
Text File  |  1994-10-12  |  63KB  |  3,515 lines

  1. _init:
  2.         clr.l wb_msg
  3.         sub.l a1,a1
  4.         move.l 4,a6
  5.         jsr -294(a6)
  6.         move.l d0,a4
  7.         tst.l $ac(a4)
  8.         bne from_cli
  9.         lea $5c(a4),a0
  10.         move.l 4,a6
  11.         jsr -384(a6)
  12.         lea $5c(a4),a0
  13.         move.l 4,a6
  14.         jsr -372(a6)
  15.         move.l d0,wb_msg
  16. from_cli:
  17.         bsr _openint
  18.         bsr _scropen
  19.         move.l _screenhd,a5
  20.         move.l $c0(a5),plane0
  21.         move.l $c4(a5),plane1
  22.         move.l $c8(a5),plane2
  23.         move.l $cc(a5),plane3
  24.         move.l $d0(a5),plane4
  25.         move.l $d4(a5),plane5
  26.         add.l #$2c,a5
  27.         move.l a5,_vp
  28.         bsr _openwindow
  29.         bsr _opengraph
  30.         add.l #$32,d0
  31.         move.l d0,a0
  32.  
  33.         move.l (a0),d0
  34.         move.l d0,copper
  35.         bsr _double
  36.         move.b #0,_wwi
  37.         move.l #0,_koord
  38.         get_mem #220,#Chip_Ram
  39.         move.l d0,a1
  40.         move.l d0,_pointer0
  41.         lea _pointer(pc),a0
  42.         move.l #80,d0
  43. _init2:
  44.         move.b (a0)+,(a1)+
  45.         dbra d0,_init2
  46. _init2clr:
  47.         add.l #30,a1
  48.         move.l #70,d0
  49. _init2clrb:
  50.         move.b #0,(a1)+
  51.         dbra d0,_init2clrb
  52.         rts
  53. _exit:
  54.         tst.l wb_msg
  55.         beq _exit_cli
  56.         move.l 4,a6
  57.         jsr -132(a6)
  58.         move.l wb_msg(pc),a1
  59.         move.l 4,a6
  60.         jsr -378(a6)
  61. _exit_cli:
  62. _exitb:
  63.         bsr _double_back
  64.         wait_vbl
  65. _exit0:
  66.         move.l _intbase,a6
  67.         move.l _screenhd,a0
  68.         moveq #0,d0
  69.         move.l _koord,d1
  70.         jsr -$a2(a6)
  71.         add.l #1,_koord
  72.         cmp.l #25,_koord
  73.         beq _exit2
  74.         bra _exit0
  75. _exit2:
  76.         fre_mem #220,_pointer0
  77.         bsr _closewindow
  78.         bsr _scrclose
  79.         bsr _closegraph
  80.         bsr _closeint
  81. _exit2b:
  82.         rts
  83.  
  84. _set_planes:
  85.         lea _planeptr(pc),a0
  86.         move.l plane0,(a0)
  87.         move.l plane1,4(a0)
  88.         move.l plane2,8(a0)
  89.         move.l plane3,12(a0)
  90.         move.l plane4,16(a0)
  91.         move.l plane5,20(a0)
  92.         rts
  93.  
  94. _bitmap2:
  95.         dc.w 40        ;Bytes pro Zeile
  96.         dc.w 256    ;Anzahl der Zeilen
  97.         dc.b 0        ;flags
  98.         dc.b 6        ;Anzahl der planes
  99.         dc.w 0        ;?
  100. _planeptr:    dc.l 0
  101.         dc.l 0
  102.         dc.l 0
  103.         dc.l 0
  104.         dc.l 0
  105.         dc.l 0
  106.         dc.l 0
  107.         dc.l 0,0,0,0
  108.  
  109.  
  110. _openwindow:
  111.         move.l _intbase,a6
  112.         lea my_window,a0
  113.         jsr -204(a6)
  114.         move.l d0,_windowhd
  115.         move.l d0,a0
  116.         move.l $32(a0),_rp
  117.         move.l _rp,a0
  118.         add.l #4,a0
  119.         move.l (a0),a1
  120.         add.l #8,a1
  121.         move.l a1,_bitmap
  122.         rts
  123. _closewindow:
  124.         move.l _intbase,a6
  125.         move.l _windowhd,a0
  126.         jmp -72(a6)
  127. _dosopen:
  128.         move.l ExecBase,a6
  129.         lea _dosname,a1
  130.         moveq #0,d0
  131.         jsr OpenLib(a6)
  132.         move.l d0,_dosbase
  133.         rts
  134. _dosclose:
  135.         move.l ExecBase,a6
  136.         move.l _dosbase,a1
  137.         jmp CloseLibrary(a6)
  138. _scropen:
  139.         move.l _intbase,a6
  140.         lea my_screen,a0
  141.         jsr OpenScreen(a6)
  142.         move.l d0,_screenhd
  143.         rts
  144. _scrclose:
  145.         move.l _intbase,a6
  146.         move.l _screenhd,a0
  147.         jmp CloseScreen(a6)
  148. _openint:
  149.         move.l ExecBase,a6
  150.         lea _IntName,a1
  151.         jsr OpenLib(a6)
  152.         move.l d0,_intbase
  153.         rts
  154. _opengraph:    move.l ExecBase,a6
  155.         lea _GraphName,a1
  156.         jsr OpenLib(a6)
  157.         move.l d0,_graphbase
  158.         rts
  159. _closeint:
  160.         move.l ExecBase,a6
  161.         move.l _intbase,a1
  162.         jsr CloseLibrary(a6)
  163.         rts
  164. _closegraph:
  165.         move.l ExecBase,a6
  166.         move.l _graphbase,a1
  167.         jsr CloseLibrary(a6)
  168.         rts
  169.  
  170. _copper_farben:
  171.         and.l #$ff,d0
  172.         and.l #$fff,d1
  173.         move.l copper,a0
  174. _copper_farben2:
  175.         cmp.w #$0180,(a0)+
  176.         bne.s _copper_farben2
  177.         lsl.l #2,d0
  178.         add.l d0,a0
  179.         move.w d1,(a0)
  180.         rts
  181.  
  182. _copper_pallette:
  183.         move.l copper,a1
  184. _copper_pallette_set:
  185.         cmp.w #$0180,(a1)+
  186.         bne.s _copper_pallette_set
  187.         moveq #31,d0
  188. _c_p_s2:
  189.         move.w (a0)+,(a1)+
  190.         add.l #2,a1
  191.         dbra d0,_c_p_s2
  192.         rts
  193.  
  194. _windowhd:    dc.l 0
  195. _intbase:    dc.l 0
  196. _graphbase:    dc.l 0
  197. _cpos0:        dc.w 0,0
  198.  
  199. _GraphName:    dc.b "graphics.library",0
  200. _IntName:    dc.b "intuition.library",0
  201. _dosname:    dc.b "dos.library",0
  202.         even
  203.  
  204. _dosbase:    dc.l 0,0,0,0,0,0,0
  205.  
  206.         even
  207.  
  208. my_screen:
  209. a_x_pos:    dc.w 0
  210. a_y_pos:    dc.w 0
  211. width:        dc.w 320
  212. heigth:        dc.w 256
  213. depth:        dc.w 6
  214. detail_pen:    dc.b 0
  215. block_pen:    dc.b 1
  216. view_modes:    dc.w 130
  217. screen_type:    dc.w 15            ;$0101
  218. font:        dc.l 0
  219. title:        dc.l 0
  220. gadget:        dc.l 0
  221. bitmap:        dc.l 0
  222.  
  223.         even
  224.  
  225. my_window:
  226. _x_pos:        dc.w 0
  227. _y_pos:        dc.w 0
  228. _width:        dc.w 320
  229. _heigth:    dc.w 256
  230. _pen:        dc.b 0
  231. _paper:        dc.b 0
  232. _flags:        dc.l 0
  233. _flags2:    dc.l $00011000+$1800
  234. _eigene:    dc.l 0
  235. _check:        dc.l 0
  236. _titel:        dc.l 0
  237. _screenhd:    dc.l 0
  238. _refresh:    dc.l 2048
  239. _limits:    dc.w 320,256,320,256
  240. _window_typ:    dc.w 15
  241.  
  242.         even
  243. wb_msg:        dc.l 0
  244. _size0:        dc.l 0        ;Größe des Hintergrund Buffers
  245. _size1:        dc.l 0        ;Größe des Hintergrund Buffers
  246. _pointer0:    dc.l 0
  247. copper:        dc.l 0
  248. copper_plane0:    dc.l 0
  249. plane0:        dc.l 0
  250. plane1:        dc.l 0
  251. plane2:        dc.l 0
  252. plane3:        dc.l 0
  253. plane4:        dc.l 0
  254. plane5:        dc.l 0
  255. _plane00:    dc.l 0
  256. _plane01:    dc.l 0
  257. _plane02:    dc.l 0
  258. _plane03:    dc.l 0
  259. _plane04:    dc.l 0
  260. _plane05:    dc.l 0
  261. _dplane0:    dc.l 0
  262. _dplane1:    dc.l 0
  263. _dplane2:    dc.l 0
  264. _dplane3:    dc.l 0
  265. _dplane4:    dc.l 0
  266. _dplane5:    dc.l 0
  267. _backplane0:    dc.l 0
  268. _backplane1:    dc.l 0
  269. _backplane2:    dc.l 0
  270. _backplane3:    dc.l 0
  271. _backplane4:    dc.l 0
  272. _backplane5:    dc.l 0
  273. _vorplane0:    dc.l 0
  274. _vorplane1:    dc.l 0
  275. _vorplane2:    dc.l 0
  276. _vorplane3:    dc.l 0
  277. _vorplane4:    dc.l 0
  278. _vorplane5:    dc.l 0
  279. _graf_ram:    dc.l 0
  280. _char:        dc.l 0        ;Adresse des gemalten Charsets
  281. _grafset:    dc.l 0        ;Zeichensatz für Grafik
  282. _adr:        dc.l 0        ;Adresse des Strings
  283. _back:        dc.l 0
  284. _filehd:    dc.l 0
  285. _vp:        dc.l 0        ;View Port der Screen
  286. _rp:        dc.l 0        ;Rast Port des Fensters
  287. _bitmap:    dc.l 0
  288. _wait:        dc.l 0
  289. _xcoord:    dc.w 0
  290. _ycoord:    dc.w 0
  291. _farbe:        dc.w 0
  292. _offset:    dc.w 0
  293. _wwi:        dc.b 0
  294. _front:        dc.b 0
  295. maus_click:    dc.b 0
  296. _bv:        dc.b 0
  297.         even
  298.  
  299. _alert:
  300.         move.l #0,a0
  301.         move.l _intbase,a6
  302.         jmp -96(a6)
  303.  
  304. _set_pointer:
  305.         cmp.l #0,d5
  306.         bne.s _set_pointer2
  307.         move.l _intbase,a6
  308.         move.l _windowhd,a0
  309.         jmp -60(a6)
  310. _set_pointer2:
  311.         move.l #0,d2
  312.         move.l #0,d3
  313.         move.l _intbase,a6
  314.         move.l _windowhd,a0
  315.         moveq #22,d0
  316.         moveq #16,d1
  317.         move.l _pointer0,a1
  318.         jmp -270(a6)        ;setpointer(a6)
  319.  
  320. _pointer:
  321.         dc.l 0,$3000300,$7a007a0,$1ff01ff0,$3ff03ff0
  322.         dc.l $30f83ff8,$3dfc3ffc,$7bfc7ffc,$30fe3ffe
  323.         dc.l $3f863ffe,$1fef1fff,$3fde3ffe,$1f861ffe
  324.         dc.l $ffc0ffc,$3f803f8,$e000e0,$3800380,$7e007e0
  325.         dc.l $3400340,0,$600060,$700070,$200020,0
  326.  
  327.         even
  328.  
  329. _clr_pointer:
  330.         move.l #0,d2
  331.         move.l #0,d3
  332.         move.l _intbase,a6
  333.         move.l _windowhd,a0
  334.         moveq #22,d0
  335.         moveq #16,d1
  336.         move.l _pointer0,a1
  337.         add.l #110,a1
  338.         jmp -270(a6)        ;setpointer(a6)
  339.  
  340. _double:
  341.         get_mem #61442,#Chip_Ram    ;10240
  342.         move.l d0,_graf_ram
  343.         move.l d0,_plane00
  344.         swap d0
  345.         move.l d0,_backplane0
  346.         move.l _graf_ram,d0
  347.         add.l #10240,d0
  348.         move.l d0,_plane01
  349.         swap d0
  350.         move.l d0,_backplane1
  351.         move.l _graf_ram,d0
  352.         add.l #20480,d0
  353.         move.l d0,_plane02
  354.         swap d0
  355.         move.l d0,_backplane2
  356.         move.l _graf_ram,d0
  357.         add.l #30720,d0
  358.         move.l d0,_plane03
  359.         swap d0
  360.         move.l d0,_backplane3
  361.         move.l _graf_ram,d0
  362.         add.l #40960,d0
  363.         move.l d0,_plane04
  364.         swap d0
  365.         move.l d0,_backplane4
  366.  
  367.         move.l _graf_ram,d0
  368.         add.l #51200,d0
  369.         move.l d0,_plane05
  370.         swap d0
  371.         move.l d0,_backplane5
  372.  
  373.         move.l plane0,d0
  374.         swap d0
  375.         move.l d0,_vorplane0
  376.         move.l d0,_dplane0
  377.         move.l plane1,d0
  378.         swap d0
  379.         move.l d0,_vorplane1
  380.         move.l d0,_dplane1
  381.         move.l plane2,d0
  382.         swap d0
  383.         move.l d0,_vorplane2
  384.         move.l d0,_dplane2
  385.         move.l plane3,d0
  386.         swap d0
  387.         move.l d0,_vorplane3
  388.         move.l d0,_dplane3
  389.         move.l plane4,d0
  390.         swap d0
  391.         move.l d0,_vorplane4
  392.         move.l d0,_dplane4
  393.         move.l plane5,d0
  394.         swap d0
  395.         move.l d0,_vorplane5
  396.         move.l d0,_dplane5
  397.         move.l copper,a0
  398. _double2:
  399.         cmp.w #$00e0,(a0)+
  400.         bne.s _double2
  401.         ;sub.l #2,a0
  402.         move.l a0,copper_plane0
  403.         rts
  404.  
  405. _double_back:
  406.         wait_vblb
  407.         move.l _dplane0,d0
  408.         move.l _dplane1,d1
  409.         move.l _dplane2,d2
  410.         move.l _dplane3,d3
  411.         move.l _dplane4,d4
  412.         move.l _dplane5,d5
  413.         move.l copper_plane0,a0
  414.         move.w d0,(a0)
  415.         swap d0
  416.         add.l #4,a0
  417.         move.w d0,(a0)
  418.         add.l #4,a0
  419.         move.w d1,(a0)
  420.         swap d1
  421.         add.l #4,a0
  422.         move.w d1,(a0)
  423.         add.l #4,a0
  424.         move.w d2,(a0)
  425.         swap d2
  426.         add.l #4,a0
  427.         move.w d2,(a0)
  428.         add.l #4,a0
  429.         move.w d3,(a0)
  430.         swap d3
  431.         add.l #4,a0
  432.         move.w d3,(a0)
  433.         add.l #4,a0
  434.         move.w d4,(a0)
  435.         swap d4
  436.         add.l #4,a0
  437.         move.w d4,(a0)
  438.         add.l #4,a0
  439.         move.w d5,(a0)
  440.         swap d5
  441.         add.l #4,a0
  442.         move.w d5,(a0)
  443.         move.l _dplane0,d0
  444.         move.l _dplane1,d1
  445.         move.l _dplane2,d2
  446.         move.l _dplane3,d3
  447.         move.l _dplane4,d4
  448.         move.l _dplane5,d5
  449.         move.l _bitmap,a0
  450.         swap d0
  451.         move.l d0,(a0)+
  452.         swap d1
  453.         move.l d1,(a0)+
  454.         swap d2
  455.         move.l d2,(a0)+
  456.         swap d3
  457.         move.l d3,(a0)+
  458.         swap d4
  459.         move.l d4,(a0)+
  460.         swap d5
  461.         move.l d5,(a0)+
  462.         fre_mem #61442,_graf_ram
  463.         rts
  464.  
  465. _flip:
  466.         eor.b #1,_wwi
  467.         cmp.b #0,_wwi
  468.         beq _flip2
  469.         move.l _backplane1,d1
  470.         move.l _backplane2,d2
  471.         move.l _backplane3,d3
  472.         move.l _backplane4,d4
  473.         move.l _backplane5,d5
  474.  
  475.         move.l copper_plane0,a0
  476.         wait_vbl
  477.         move.l _backplane0,d0
  478.         move.w d0,(a0)
  479.         swap d0
  480.         add.l #4,a0
  481.         move.w d0,(a0)
  482.         add.l #4,a0
  483.         move.w d1,(a0)
  484.         swap d1
  485.         add.l #4,a0
  486.         move.w d1,(a0)
  487.         add.l #4,a0
  488.         move.w d2,(a0)
  489.         swap d2
  490.         add.l #4,a0
  491.         move.w d2,(a0)
  492.         add.l #4,a0
  493.         move.w d3,(a0)
  494.         swap d3
  495.         add.l #4,a0
  496.         move.w d3,(a0)
  497.         add.l #4,a0
  498.         move.w d4,(a0)
  499.         swap d4
  500.         add.l #4,a0
  501.         move.w d4,(a0)
  502.         add.l #4,a0
  503.         move.w d5,(a0)
  504.         swap d5
  505.         add.l #4,a0
  506.         move.w d5,(a0)
  507. _swap:
  508.         move.l plane0,d0
  509.         move.l plane1,d1
  510.         move.l plane2,d2
  511.         move.l plane3,d3
  512.         move.l plane4,d4
  513.         move.l plane5,d5
  514.         move.l _plane00,a0
  515.         move.l _plane01,a1
  516.         move.l _plane02,a2
  517.         move.l _plane03,a3
  518.         move.l _plane04,a4
  519.         move.l _plane05,a5
  520.  
  521.         exg d0,a0
  522.         exg d1,a1
  523.         exg d2,a2
  524.         exg d3,a3
  525.         exg d4,a4
  526.         exg d5,a5
  527.         move.l a0,_plane00
  528.         move.l a1,_plane01
  529.         move.l a2,_plane02
  530.         move.l a3,_plane03
  531.         move.l a4,_plane04
  532.         move.l a5,_plane05
  533.         move.l d0,plane0
  534.         move.l d1,plane1
  535.         move.l d2,plane2
  536.         move.l d3,plane3
  537.         move.l d4,plane4
  538.         move.l d5,plane5
  539.         rts
  540.  
  541. _flip2:
  542.         move.l _vorplane1,d1
  543.         move.l _vorplane2,d2
  544.         move.l _vorplane3,d3
  545.         move.l _vorplane4,d4
  546.         move.l _vorplane5,d5
  547.         move.l copper_plane0,a0
  548.         wait_vbl
  549.         move.l _vorplane0,d0
  550.         move.w d0,(a0)
  551.         swap d0
  552.         add.l #4,a0
  553.         move.w d0,(a0)
  554.         add.l #4,a0
  555.         move.w d1,(a0)
  556.         swap d1
  557.         add.l #4,a0
  558.         move.w d1,(a0)
  559.         add.l #4,a0
  560.         move.w d2,(a0)
  561.         swap d2
  562.         add.l #4,a0
  563.         move.w d2,(a0)
  564.         add.l #4,a0
  565.         move.w d3,(a0)
  566.         swap d3
  567.         add.l #4,a0
  568.         move.w d3,(a0)
  569.         add.l #4,a0
  570.         move.w d4,(a0)
  571.         swap d4
  572.         add.l #4,a0
  573.         move.w d4,(a0)
  574.         add.l #4,a0
  575.         move.w d5,(a0)
  576.         swap d5
  577.         add.l #4,a0
  578.         move.w d5,(a0)
  579.         bsr _swap
  580.         rts
  581. _equ:
  582.         wait_vblb
  583.         move.l copper_plane0,a0
  584.         move.w (a0),d0
  585.         swap d0
  586.         add.l #4,a0
  587.         move.w (a0),d0
  588.         move.l plane0,d1
  589.         cmp.l d0,d1
  590.         bne _equ2
  591.         copy_mem2 plane0,_plane00,#10240
  592.         copy_mem2 plane1,_plane01,#10240
  593.         copy_mem2 plane2,_plane02,#10240
  594.         copy_mem2 plane3,_plane03,#10240
  595.         copy_mem2 plane4,_plane04,#10240
  596.         copy_mem2 plane5,_plane05,#10240
  597.         rts
  598. _equ2:
  599.         copy_mem2 _plane00,plane0,#10240
  600.         copy_mem2 _plane01,plane1,#10240
  601.         copy_mem2 _plane02,plane2,#10240
  602.         copy_mem2 _plane03,plane3,#10240
  603.         copy_mem2 _plane04,plane4,#10240
  604.         copy_mem2 _plane05,plane5,#10240
  605.         rts
  606.  
  607. _back_plane:
  608.         cmp.b #0,_wwi
  609.         beq _back1
  610.         bra _back2
  611.         rts
  612. _front_plane:
  613.         cmp.b #0,_wwi
  614.         bne _back1
  615.         bra _back2
  616.         rts
  617.  
  618. _back1:
  619.         move.l _vorplane0,d0
  620.         move.l _vorplane1,d1
  621.         move.l _vorplane2,d2
  622.         move.l _vorplane3,d3
  623.         move.l _vorplane4,d4
  624.         move.l _vorplane5,d5
  625.         swap d0
  626.         swap d1
  627.         swap d2
  628.         swap d3
  629.         swap d4
  630.         swap d5
  631.         move.l d0,_plane00
  632.         move.l d1,_plane01
  633.         move.l d2,_plane02
  634.         move.l d3,_plane03
  635.         move.l d4,_plane04
  636.         move.l d5,_plane05
  637.  
  638.         move.l _backplane0,d0
  639.         move.l _backplane1,d1
  640.         move.l _backplane2,d2
  641.         move.l _backplane3,d3
  642.         move.l _backplane4,d4
  643.         move.l _backplane5,d5
  644.         swap d0
  645.         swap d1
  646.         swap d2
  647.         swap d3
  648.         swap d4
  649.         swap d5
  650.         move.l d0,plane0
  651.         move.l d1,plane1
  652.         move.l d2,plane2
  653.         move.l d3,plane3
  654.         move.l d4,plane4
  655.         move.l d5,plane5
  656.         rts
  657. _back2:
  658.         move.l _vorplane0,d0
  659.         move.l _vorplane1,d1
  660.         move.l _vorplane2,d2
  661.         move.l _vorplane3,d3
  662.         move.l _vorplane4,d4
  663.         move.l _vorplane5,d5
  664.         swap d0
  665.         swap d1
  666.         swap d2
  667.         swap d3
  668.         swap d4
  669.         swap d5
  670.         move.l d0,plane0
  671.         move.l d1,plane1
  672.         move.l d2,plane2
  673.         move.l d3,plane3
  674.         move.l d4,plane4
  675.         move.l d5,plane5
  676.  
  677.         move.l _backplane0,d0
  678.         move.l _backplane1,d1
  679.         move.l _backplane2,d2
  680.         move.l _backplane3,d3
  681.         move.l _backplane4,d4
  682.         move.l _backplane5,d5
  683.         swap d0
  684.         swap d1
  685.         swap d2
  686.         swap d3
  687.         swap d4
  688.         swap d5
  689.         move.l d0,_plane00
  690.         move.l d1,_plane01
  691.         move.l d2,_plane02
  692.         move.l d3,_plane03
  693.         move.l d4,_plane04
  694.         move.l d5,_plane05
  695.         rts
  696. _neue_adr:
  697.         move.l _bitmap,a0
  698.         move.l plane0,(a0)+
  699.         move.l plane1,(a0)+
  700.         move.l plane2,(a0)+
  701.         move.l plane3,(a0)+
  702.         move.l plane4,(a0)+
  703.         move.l plane5,(a0)+
  704.         rts
  705.  
  706.         ifne text2__
  707. _text2_prg:
  708.         bsr _neue_adr
  709.         moveq #0,d0
  710.         move.w _color,d0
  711.         pen d0
  712.         add.w #6,_y
  713.         moveq #0,d1
  714.         move.w _y,d1
  715.         move.w _x,d0
  716.         gotoxy d0,d1
  717.         move.l _str,a0        ;Adresse string
  718.         bsr _get_anz
  719.         move.l _rp,a1        ;Rastport
  720.         move.l _graphbase,a6
  721.         jmp -60(a6)
  722.  
  723. _str:        dc.l 0
  724. _color:        dc.w 0
  725. _x:        dc.w 0
  726. _y:        dc.w 0
  727.         even
  728.  
  729.         ENDC
  730.  
  731.         ifne text__
  732. _scan_text:
  733.         move.l a5,_adr        ;Adresse des Strings speichern
  734.         move.w d0,_farbe    ;Farbe sichern
  735.         mulu.w #40,d3        ;Y Koord errechnen
  736.         add.w d3,d2        ;x Koord + Y Koord
  737.         move.w d2,_offset    ;Ergebnis sichern
  738. _pl0:
  739.         cmp.w #99,_farbe
  740.         bgt _only_one
  741. _pl0b:
  742.         lea _pl1(pc),a0
  743.         move.l a0,_back
  744.         move.l plane0,a0
  745.         add.w d2,a0        ;plus Y Koordinate
  746.         move.w _farbe,d0
  747.         and.l #1,d0
  748.         bne _scan_text2
  749.         bra _zscan_text2
  750. _pl1:
  751.         lea _pl2(pc),a0
  752.         move.l a0,_back
  753.         move.l _adr,a5
  754.         move.l plane1,a0
  755.         move.w _offset,d2
  756.         add.w d2,a0        ;plus Y Koordinate
  757.         move.w _farbe,d0
  758.         and.l #2,d0
  759.         bne _scan_text2
  760.         bra _zscan_text2
  761. _pl2:
  762.         lea _pl3(pc),a0
  763.         move.l a0,_back
  764.         move.l _adr,a5
  765.         move.l plane2,a0
  766.         move.w _offset,d2
  767.         add.w d2,a0        ;plus Y Koordinate
  768.         move.w _farbe,d0
  769.         and.l #%00000100,d0
  770.         bne _scan_text2
  771.         bra _zscan_text2
  772. _pl3:
  773.         lea _pl4(pc),a0
  774.         move.l a0,_back
  775.         move.l _adr,a5
  776.         move.l plane3,a0
  777.         move.w _offset,d2
  778.         add.w d2,a0        ;plus Y Koordinate
  779.         move.w _farbe,d0
  780.         and.l #%00001000,d0
  781.         bne _scan_text2
  782.         bra _zscan_text2
  783.  
  784. _pl4:
  785.         lea _pl5(pc),a0
  786.         move.l a0,_back
  787.         move.l _adr,a5
  788.         move.l plane4,a0
  789.         move.w _offset,d2
  790.         add.w d2,a0        ;plus Y Koordinate
  791.         move.w _farbe,d0
  792.         and.l #%00010000,d0
  793.         bne.s _scan_text2
  794.         bra.s _zscan_text2
  795.  
  796. _pl5:
  797.         rts
  798.  
  799. _scan_text2:
  800.         move.b (a5)+,d0        ;Buchstabe hohlen
  801.         beq.s _ende        ;wenn 0 dann Ende
  802.         and.w #$ff,d0        ;kein Buchstabe >255
  803.         
  804.         lea _space(pc),a2    ;Zeiger auf Zeichensatz
  805.         ;add.w d0,a2        ;Zeichen ermitteln
  806. _text_print2:
  807.         move.b (0,a2,d0*8),(a0)    ;Daten von Tabelle in Plane
  808.         move.b (1,a2,d0*8),40(a0)
  809.         move.b (2,a2,d0*8),80(a0)
  810.         move.b (3,a2,d0*8),120(a0)
  811.         move.b (4,a2,d0*8),160(a0)
  812.         move.b (5,a2,d0*8),200(a0)
  813.         move.b (6,a2,d0*8),240(a0)
  814.         move.b (7,a2,d0*8),280(a0)
  815.         add.w #1,a0
  816.         bra.s _scan_text2
  817.  
  818. _ende:
  819.         move.l _back,a0
  820.         jmp (a0)
  821.  
  822.  
  823. _zscan_text2:
  824.         move.b (a5)+,d0        ;Buchstabe hohlen
  825.         beq.s _zende        ;wenn 0 dann Ende
  826.         lea _space(pc),a2    ;Zeiger auf Zeichensatz
  827.         moveq #7,d1        ;
  828. _ztext_print2:
  829.         move.b (a2)+,(a0)    ;Daten von Tabelle in Plane
  830.         add.w #40,a0        ;eine Spalte tiefer
  831.         dbra d1,_ztext_print2
  832.         sub.w #319,a0        ;Y Koord wieder zurrueck -320
  833.                     ;und plus x (1)
  834.         bra.s _zscan_text2
  835.  
  836. _zende:
  837.         move.l _back,a0
  838.         jmp (a0)
  839.  
  840. _only_one:
  841.         lea _only_one99(pc),a0
  842.         move.l a0,_back
  843.         cmp.w #255,_farbe
  844.         beq _charset
  845.         cmp.w #100,_farbe
  846.         beq _only_one0        
  847.         cmp.w #101,_farbe
  848.         beq _only_one1
  849.         cmp.w #102,_farbe
  850.         beq _only_one2
  851.         cmp.w #103,_farbe
  852.         beq _only_one3
  853.         cmp.w #104,_farbe
  854.         beq _only_one4
  855.         rts
  856. _only_one0:
  857.         move.l plane0,a0
  858.         add.w d2,a0        ;plus Y Koordinate
  859.         bra _scan_text2
  860. _only_one1:
  861.         move.l plane1,a0
  862.         add.w d2,a0        ;plus Y Koordinate
  863.         bra _scan_text2
  864. _only_one2:
  865.         move.l plane2,a0
  866.         add.w d2,a0        ;plus Y Koordinate
  867.         bra _scan_text2
  868. _only_one3:
  869.         move.l plane3,a0
  870.         add.w d2,a0        ;plus Y Koordinate
  871.         bra _scan_text2
  872. _only_one4:
  873.         move.l plane4,a0
  874.         add.w d2,a0        ;plus Y Koordinate
  875.         bra _scan_text2
  876.  
  877. _only_one99:
  878.         rts
  879.  
  880. _charset:
  881.         move.l _adr,a5
  882.         move.l plane0,a0
  883.         move.w _offset,d2
  884.         add.w d2,a0
  885.         moveq #0,d6
  886.         bsr _scan_text22
  887.  
  888.         move.l _adr,a5
  889.         move.l plane1,a0
  890.         move.w _offset,d2
  891.         add.w d2,a0
  892.         moveq #8,d6
  893.         bsr _scan_text22
  894.  
  895.         move.l _adr,a5
  896.         move.l plane2,a0
  897.         move.w _offset,d2
  898.         add.w d2,a0
  899.         moveq #16,d6
  900.         bsr _scan_text22
  901.  
  902.         move.l _adr,a5
  903.         move.l plane3,a0
  904.         move.w _offset,d2
  905.         add.w d2,a0
  906.         moveq #24,d6
  907.         bsr _scan_text22
  908.  
  909.         move.l _adr,a5
  910.         move.l plane4,a0
  911.         move.w _offset,d2
  912.         add.w d2,a0
  913.         moveq #32,d6
  914.         bsr _scan_text22
  915.  
  916.         move.l _adr,a5
  917.         move.l plane5,a0
  918.         move.w _offset,d2
  919.         add.w d2,a0
  920.         moveq #40,d6
  921.  
  922. _scan_text22:
  923.         move.b (a5)+,d0
  924.         beq.s _ende2        ;wenn 0 dann Ende
  925.         and.w #$ff,d0        ;kein Buchstabe >255
  926.         sub.w #32,d0
  927.         move.l d0,d1
  928.         lsl.w #4,d0        ;mal 48 (pro Buchstabe 48 Bytes)
  929.         lsl.w #5,d1
  930.  
  931.         move.l _char,a2     ;Zeiger auf Zeichensatz
  932.         add.w d0,a2        ;Zeichen ermitteln
  933.         add.w d1,a2
  934.         add.w d6,a2
  935.         moveq #7,d1        ;
  936. _text_print22:
  937.         move.b (a2)+,(a0)    ;Daten von Tabelle in Plane
  938.         add.w #40,a0        ;eine Spalte tiefer
  939.         dbra d1,_text_print22
  940.         sub.w #319,a0        ;Y Koord wieder zurrueck -320
  941.                     ;und plus x (1)
  942.         bra.s _scan_text22
  943. _ende2:
  944.         rts
  945.  
  946. ;***************************************
  947. ;Zeichensatz Tabelle
  948. ; , = Amiga Zeichen
  949. ;die Nullen muessen UNBEDINGT bleiben, da sonst die falschen Zeichen
  950. ;ermittelt werden
  951.  
  952. _space:        
  953.         dc.l 0,0,0,0,0,0,0,0
  954.         dc.l 0,0,0,0,0,0,0,0
  955.         dc.l 0,0,0,0,0,0,0,0
  956.         dc.l 0,0,0,0,0,0,0,0
  957.         dc.l 0,0,0,0,0,0,0,0
  958.         dc.l 0,0,0,0,0,0,0,0
  959.         dc.l 0,0,0,0,0,0,0,0
  960.         dc.l 0,0,0,0,0,0,0,0
  961.  
  962.         dc.l 0,0
  963.  
  964.         dc.b %00011000
  965.         dc.b %00011000
  966.         dc.b %00011000
  967.         dc.b %00011000
  968.         dc.b %00011000
  969.         dc.b %00000000
  970.         dc.b %00011000
  971.         dc.b %00000000
  972.  
  973.         dc.l 0,0
  974.  
  975.         dc.b %01101100
  976.         dc.b %01101100
  977.         dc.b %11111110
  978.         dc.b %01101100
  979.         dc.b %11111110
  980.         dc.b %01101100
  981.         dc.b %01101100
  982.         dc.b %00000000
  983.  
  984.         dc.l 0,0,0,0,0,0,0,0
  985.  
  986.         dc.b %00001100
  987.         dc.b %00011000
  988.         dc.b %00110000
  989.         dc.b %00110000
  990.         dc.b %00110000
  991.         dc.b %00011000
  992.         dc.b %00001100
  993.         dc.b %00000000
  994.  
  995.         dc.b %00110000
  996.         dc.b %00011000
  997.         dc.b %00001100
  998.         dc.b %00001100
  999.         dc.b %00001100
  1000.         dc.b %00011000
  1001.         dc.b %00110000
  1002.         dc.b %00000000
  1003.  
  1004.         dc.l 0,0
  1005.  
  1006.         dc.b %00000000
  1007.         dc.b %00011000
  1008.         dc.b %00011000
  1009.         dc.b %01111110
  1010.         dc.b %00011000
  1011.         dc.b %00011000
  1012.         dc.b %00000000
  1013.         dc.b %00000000
  1014.  
  1015.         dc.b %00000000
  1016.         dc.b %00000000
  1017.         dc.b %00000000
  1018.         dc.b %00000000
  1019.         dc.b %00000000
  1020.         dc.b %00011000
  1021.         dc.b %00011000
  1022.         dc.b %00110000
  1023.  
  1024.         dc.b %00000000
  1025.         dc.b %00000000
  1026.         dc.b %00000000
  1027.         dc.b %01111110
  1028.         dc.b %00000000
  1029.         dc.b %00000000
  1030.         dc.b %00000000
  1031.         dc.b %00000000
  1032.  
  1033.         dc.b %00000000
  1034.         dc.b %00000000
  1035.         dc.b %00000000
  1036.         dc.b %00000000
  1037.         dc.b %00000000
  1038.         dc.b %00011000
  1039.         dc.b %00011000
  1040.         dc.b %00000000
  1041.  
  1042.         dc.b %00000110
  1043.         dc.b %00001100
  1044.         dc.b %00011000
  1045.         dc.b %00110000
  1046.         dc.b %01100000
  1047.         dc.b %11000000
  1048.         dc.b %10000000
  1049.         dc.b %00000000
  1050.  
  1051.         dc.b %01111100
  1052.         dc.b %11000110
  1053.         dc.b %11001110
  1054.         dc.b %11010110
  1055.         dc.b %11100110
  1056.         dc.b %11000110
  1057.         dc.b %01111100
  1058.         dc.b %00000000
  1059.  
  1060.         dc.b %00011000
  1061.         dc.b %00111000
  1062.         dc.b %00011000
  1063.         dc.b %00011000
  1064.         dc.b %00011000
  1065.         dc.b %00011000
  1066.         dc.b %01111110
  1067.         dc.b %00000000
  1068.  
  1069.         dc.b %00111100
  1070.         dc.b %01100110
  1071.         dc.b %00000110
  1072.         dc.b %00111100
  1073.         dc.b %01100000
  1074.         dc.b %01100110
  1075.         dc.b %01111110
  1076.         dc.b %00000000
  1077.  
  1078.         dc.b %00111100
  1079.         dc.b %01100110
  1080.         dc.b %00000110
  1081.         dc.b %00011100
  1082.         dc.b %00000110
  1083.         dc.b %01100110
  1084.         dc.b %00111100
  1085.         dc.b %00000000
  1086.  
  1087.         dc.b %00011100
  1088.         dc.b %00111100
  1089.         dc.b %01101100
  1090.         dc.b %11001100
  1091.         dc.b %11111110
  1092.         dc.b %00001100
  1093.         dc.b %00011110
  1094.         dc.b %00000000
  1095.  
  1096.         dc.b %01111110
  1097.         dc.b %01100010
  1098.         dc.b %01100000
  1099.         dc.b %01111100
  1100.         dc.b %00000110
  1101.         dc.b %01100110
  1102.         dc.b %00111100
  1103.         dc.b %00000000
  1104.  
  1105.         dc.b %00111100
  1106.         dc.b %01100110
  1107.         dc.b %01100000
  1108.         dc.b %01111100
  1109.         dc.b %01100110
  1110.         dc.b %01100110
  1111.         dc.b %00111100
  1112.         dc.b %00000000
  1113.  
  1114.         dc.b %01111110
  1115.         dc.b %01100110
  1116.         dc.b %00000110
  1117.         dc.b %00001100
  1118.         dc.b %00011000
  1119.         dc.b %00011000
  1120.         dc.b %00011000
  1121.         dc.b %00000000
  1122.  
  1123.         dc.b %00111100
  1124.         dc.b %01100110
  1125.         dc.b %01100110
  1126.         dc.b %00111100
  1127.         dc.b %01100110
  1128.         dc.b %01100110
  1129.         dc.b %00111100
  1130.         dc.b %00000000
  1131.  
  1132.         dc.b %00111100
  1133.         dc.b %01100110
  1134.         dc.b %01100110
  1135.         dc.b %00111110
  1136.         dc.b %00000110
  1137.         dc.b %01100110
  1138.         dc.b %00111100
  1139.         dc.b %00000000
  1140.  
  1141.         dc.b %00000000
  1142.         dc.b %00011000
  1143.         dc.b %00011000
  1144.         dc.b %00000000
  1145.         dc.b %00000000
  1146.         dc.b %00011000
  1147.         dc.b %00011000
  1148.         dc.b %00000000
  1149.  
  1150.         dc.l 0,0,0,0
  1151.         dc.l 0,0,0,0
  1152.  
  1153.         dc.b %00111100
  1154.         dc.b %01100110
  1155.         dc.b %01100110
  1156.         dc.b %00001100
  1157.         dc.b %00011000
  1158.         dc.b %00000000
  1159.         dc.b %00011000
  1160.         dc.b %00000000
  1161.  
  1162.         dc.l 0,0
  1163.  
  1164.         dc.b %00011000
  1165.         dc.b %00111100
  1166.         dc.b %01100110
  1167.         dc.b %01100110
  1168.         dc.b %01111110
  1169.         dc.b %01100110
  1170.         dc.b %01100110
  1171.         dc.b %00000000
  1172.  
  1173.         dc.b %11111100
  1174.         dc.b %01100110
  1175.         dc.b %01100110
  1176.         dc.b %01111100
  1177.         dc.b %01100110
  1178.         dc.b %01100110
  1179.         dc.b %11111100
  1180.         dc.b %00000000
  1181.  
  1182.         dc.b %00111100
  1183.         dc.b %01100110
  1184.         dc.b %11000000
  1185.         dc.b %11000000
  1186.         dc.b %11000000
  1187.         dc.b %01100110
  1188.         dc.b %00111100
  1189.         dc.b %00000000
  1190.  
  1191.         dc.b %11111000
  1192.         dc.b %01101100
  1193.         dc.b %01100110
  1194.         dc.b %01100110
  1195.         dc.b %01100110
  1196.         dc.b %01101100
  1197.         dc.b %11111000
  1198.         dc.b %00000000
  1199.  
  1200.         dc.b %11111110
  1201.         dc.b %01100010
  1202.         dc.b %01101000
  1203.         dc.b %01111000
  1204.         dc.b %01101000
  1205.         dc.b %01100010
  1206.         dc.b %11111110
  1207.         dc.b %00000000
  1208.  
  1209.         dc.b %11111110
  1210.         dc.b %01100010
  1211.         dc.b %01101000
  1212.         dc.b %01110000
  1213.         dc.b %01101000
  1214.         dc.b %01100000
  1215.         dc.b %11110000
  1216.         dc.b %00000000
  1217.  
  1218.         dc.b %00111100
  1219.         dc.b %01100110
  1220.         dc.b %11000000
  1221.         dc.b %11000000
  1222.         dc.b %11001110
  1223.         dc.b %01100110
  1224.         dc.b %00111110
  1225.         dc.b %00000000
  1226.  
  1227.         dc.b %01100110
  1228.         dc.b %01100110
  1229.         dc.b %01100110
  1230.         dc.b %01111110
  1231.         dc.b %01100110
  1232.         dc.b %01100110
  1233.         dc.b %01100110
  1234.         dc.b %00000000
  1235.  
  1236.         dc.b %01111110
  1237.         dc.b %00011000
  1238.         dc.b %00011000
  1239.         dc.b %00011000
  1240.         dc.b %00011000
  1241.         dc.b %00011000
  1242.         dc.b %01111110
  1243.         dc.b %00000000
  1244.  
  1245.         dc.b %00011110
  1246.         dc.b %00001100
  1247.         dc.b %00001100
  1248.         dc.b %00001100
  1249.         dc.b %11001100
  1250.         dc.b %11001100
  1251.         dc.b %01111000
  1252.         dc.b %00000000
  1253.  
  1254.         dc.b %11100110
  1255.         dc.b %01100110
  1256.         dc.b %01101100
  1257.         dc.b %01111000
  1258.         dc.b %01101100
  1259.         dc.b %01100110
  1260.         dc.b %11100110
  1261.         dc.b %00000000
  1262.  
  1263.         dc.b %11110000
  1264.         dc.b %01100000
  1265.         dc.b %01100000
  1266.         dc.b %01100000
  1267.         dc.b %01100010
  1268.         dc.b %01100110
  1269.         dc.b %11111110
  1270.         dc.b %00000000
  1271.  
  1272.         dc.b %11000110
  1273.         dc.b %11101110
  1274.         dc.b %11111110
  1275.         dc.b %11111110
  1276.         dc.b %11010110
  1277.         dc.b %11000110
  1278.         dc.b %11000110
  1279.         dc.b %00000000
  1280.  
  1281.         dc.b %11000110
  1282.         dc.b %11100110
  1283.         dc.b %11110110
  1284.         dc.b %11011110
  1285.         dc.b %11001110
  1286.         dc.b %11000110
  1287.         dc.b %11000110
  1288.         dc.b %00000000
  1289.  
  1290.         dc.b %00111000
  1291.         dc.b %01101100
  1292.         dc.b %11000110
  1293.         dc.b %11000110
  1294.         dc.b %11000110
  1295.         dc.b %01101100
  1296.         dc.b %00111000
  1297.         dc.b %00000000
  1298.  
  1299.         dc.b %11111100
  1300.         dc.b %01100110
  1301.         dc.b %01100110
  1302.         dc.b %01111100
  1303.         dc.b %01100000
  1304.         dc.b %01100000
  1305.         dc.b %11110000
  1306.         dc.b %00000000
  1307.  
  1308.         dc.b %00111000
  1309.         dc.b %01101100
  1310.         dc.b %11000110
  1311.         dc.b %11000110
  1312.         dc.b %11011010
  1313.         dc.b %11001100
  1314.         dc.b %01110110
  1315.         dc.b %00000000
  1316.  
  1317.         dc.b %11111100
  1318.         dc.b %01100110
  1319.         dc.b %01100110
  1320.         dc.b %01111100
  1321.         dc.b %01101100
  1322.         dc.b %01100110
  1323.         dc.b %11100110
  1324.         dc.b %00000000
  1325.  
  1326.         dc.b %00111100
  1327.         dc.b %01100110
  1328.         dc.b %01100000
  1329.         dc.b %00111100
  1330.         dc.b %00000110
  1331.         dc.b %01100110
  1332.         dc.b %00111100
  1333.         dc.b %00000000
  1334.  
  1335.         dc.b %01111110
  1336.         dc.b %01011010
  1337.         dc.b %00011000
  1338.         dc.b %00011000
  1339.         dc.b %00011000
  1340.         dc.b %00011000
  1341.         dc.b %00111100
  1342.         dc.b %00000000
  1343.  
  1344.         dc.b %01100110
  1345.         dc.b %01100110
  1346.         dc.b %01100110
  1347.         dc.b %01100110
  1348.         dc.b %01100110
  1349.         dc.b %01100110
  1350.         dc.b %00111100
  1351.         dc.b %00000000
  1352.  
  1353.         dc.b %01100110
  1354.         dc.b %01100110
  1355.         dc.b %01100110
  1356.         dc.b %01100110
  1357.         dc.b %01100110
  1358.         dc.b %00111100
  1359.         dc.b %00011000
  1360.         dc.b %00000000
  1361.  
  1362.         dc.b %11000110
  1363.         dc.b %11000110
  1364.         dc.b %11000110
  1365.         dc.b %11010110
  1366.         dc.b %11111110
  1367.         dc.b %11101110
  1368.         dc.b %11000110
  1369.         dc.b %00000000
  1370.  
  1371.         dc.b %11000110
  1372.         dc.b %01101100
  1373.         dc.b %00111000
  1374.         dc.b %00111000
  1375.         dc.b %01101100
  1376.         dc.b %11000110
  1377.         dc.b %11000110
  1378.         dc.b %00000000
  1379.  
  1380.         dc.b %01100110
  1381.         dc.b %01100110
  1382.         dc.b %01100110
  1383.         dc.b %00111100
  1384.         dc.b %00011000
  1385.         dc.b %00011000
  1386.         dc.b %00111100
  1387.         dc.b %00000000
  1388.  
  1389.         dc.b %11111110
  1390.         dc.b %11000110
  1391.         dc.b %10001100
  1392.         dc.b %00011000
  1393.         dc.b %00110010
  1394.         dc.b %01100110
  1395.         dc.b %11111110
  1396.         dc.b %00000000
  1397.  
  1398.         dc.b %00111100
  1399.         dc.b %00110000
  1400.         dc.b %00110000
  1401.         dc.b %00110000
  1402.         dc.b %00110000
  1403.         dc.b %00110000
  1404.         dc.b %00111100
  1405.         dc.b %00000000
  1406.  
  1407.         dc.b %11000000
  1408.         dc.b %01100000
  1409.         dc.b %00110000
  1410.         dc.b %00011000
  1411.         dc.b %00001100
  1412.         dc.b %00000110
  1413.         dc.b %00000010
  1414.         dc.b %00000000
  1415.  
  1416.         dc.b %00111100
  1417.         dc.b %00001100
  1418.         dc.b %00001100
  1419.         dc.b %00001100
  1420.         dc.b %00001100
  1421.         dc.b %00001100
  1422.         dc.b %00111100
  1423.         dc.b %00000000
  1424.  
  1425.         dc.l 0,0
  1426.  
  1427.         dc.b %00000000
  1428.         dc.b %00000000
  1429.         dc.b %00000000
  1430.         dc.b %00000000
  1431.         dc.b %00000000
  1432.         dc.b %00000000
  1433.         dc.b %00000000
  1434.         dc.b %11111111
  1435.  
  1436.         dc.b %00110000
  1437.         dc.b %00011000
  1438.         dc.b %00001100
  1439.         dc.b %00000000
  1440.         dc.b %00000000
  1441.         dc.b %00000000
  1442.         dc.b %00000000
  1443.         dc.b %00000000
  1444.  
  1445.         dc.b %00000000
  1446.         dc.b %00000000
  1447.         dc.b %01111000
  1448.         dc.b %00001100
  1449.         dc.b %01111100
  1450.         dc.b %11001100
  1451.         dc.b %01110110
  1452.         dc.b %00000000
  1453.  
  1454.         dc.b %11100000
  1455.         dc.b %01100000
  1456.         dc.b %01111100
  1457.         dc.b %01100110
  1458.         dc.b %01100110
  1459.         dc.b %01100110
  1460.         dc.b %11011100
  1461.         dc.b %00000000
  1462.  
  1463.         dc.b %00000000
  1464.         dc.b %00000000
  1465.         dc.b %00111100
  1466.         dc.b %01100110
  1467.         dc.b %01100000
  1468.         dc.b %01100110
  1469.         dc.b %00111100
  1470.         dc.b %00000000
  1471.  
  1472.         dc.b %00011100
  1473.         dc.b %00001100
  1474.         dc.b %01111100
  1475.         dc.b %11001100
  1476.         dc.b %11001100
  1477.         dc.b %11001100
  1478.         dc.b %01110110
  1479.         dc.b %00000000
  1480.  
  1481.         dc.b %00000000
  1482.         dc.b %00000000
  1483.         dc.b %00111100
  1484.         dc.b %01100110
  1485.         dc.b %01111110
  1486.         dc.b %01100000
  1487.         dc.b %00111100
  1488.         dc.b %00000000
  1489.  
  1490.         dc.b %00011100
  1491.         dc.b %00110110
  1492.         dc.b %00110000
  1493.         dc.b %01111000
  1494.         dc.b %00110000
  1495.         dc.b %00110000
  1496.         dc.b %01111000
  1497.         dc.b %00000000
  1498.  
  1499.         dc.b %00000000
  1500.         dc.b %00000000
  1501.         dc.b %00111110
  1502.         dc.b %01100110
  1503.         dc.b %01100110
  1504.         dc.b %00111110
  1505.         dc.b %00000110
  1506.         dc.b %01111100
  1507.  
  1508.         dc.b %11100000
  1509.         dc.b %01100000
  1510.         dc.b %01101100
  1511.         dc.b %01110110
  1512.         dc.b %01100110
  1513.         dc.b %01100110
  1514.         dc.b %11100110
  1515.         dc.b %00000000
  1516.  
  1517.         dc.b %00011000
  1518.         dc.b %00000000
  1519.         dc.b %00111000
  1520.         dc.b %00011000
  1521.         dc.b %00011000
  1522.         dc.b %00011000
  1523.         dc.b %00111100
  1524.         dc.b %00000000
  1525.  
  1526.         dc.b %00000110
  1527.         dc.b %00000000
  1528.         dc.b %00001110
  1529.         dc.b %00000110
  1530.         dc.b %00000110
  1531.         dc.b %01100110
  1532.         dc.b %01100110
  1533.         dc.b %00111100
  1534.  
  1535.         dc.b %11100000
  1536.         dc.b %01100000
  1537.         dc.b %01100110
  1538.         dc.b %01101100
  1539.         dc.b %01111000
  1540.         dc.b %01101100
  1541.         dc.b %11100110
  1542.         dc.b %00000000
  1543.  
  1544.         dc.b %00111000
  1545.         dc.b %00011000
  1546.         dc.b %00011000
  1547.         dc.b %00011000
  1548.         dc.b %00011000
  1549.         dc.b %00011000
  1550.         dc.b %00111100
  1551.         dc.b %00000000
  1552.  
  1553.         dc.b %00000000
  1554.         dc.b %00000000
  1555.         dc.b %01101100
  1556.         dc.b %11111110
  1557.         dc.b %11010110
  1558.         dc.b %11010110
  1559.         dc.b %11000110
  1560.         dc.b %00000000
  1561.  
  1562.         dc.b %00000000
  1563.         dc.b %00000000
  1564.         dc.b %11011100
  1565.         dc.b %01101100
  1566.         dc.b %01101100
  1567.         dc.b %01101100
  1568.         dc.b %01101100
  1569.         dc.b %00000000
  1570.  
  1571.         dc.b %00000000
  1572.         dc.b %00000000
  1573.         dc.b %00111100
  1574.         dc.b %01100110
  1575.         dc.b %01100110
  1576.         dc.b %01100110
  1577.         dc.b %00111100
  1578.         dc.b %00000000
  1579.  
  1580.         dc.b %00000000
  1581.         dc.b %00000000
  1582.         dc.b %11011100
  1583.         dc.b %01100110
  1584.         dc.b %01100110
  1585.         dc.b %01111100
  1586.         dc.b %01100000
  1587.         dc.b %11110000
  1588.  
  1589.         dc.b %00000000
  1590.         dc.b %00000000
  1591.         dc.b %01110110
  1592.         dc.b %11001100
  1593.         dc.b %11001100
  1594.         dc.b %01111100
  1595.         dc.b %00001100
  1596.         dc.b %00011110
  1597.  
  1598.         dc.b %00000000
  1599.         dc.b %00000000
  1600.         dc.b %11011100
  1601.         dc.b %01110110
  1602.         dc.b %01100000
  1603.         dc.b %01100000
  1604.         dc.b %11110000
  1605.         dc.b %00000000
  1606.  
  1607.         dc.b %00000000
  1608.         dc.b %00000000
  1609.         dc.b %00111100
  1610.         dc.b %01100000
  1611.         dc.b %00111100
  1612.         dc.b %00000110
  1613.         dc.b %01111100
  1614.         dc.b %00000000
  1615.  
  1616.         dc.b %00110000
  1617.         dc.b %00110000
  1618.         dc.b %01111100
  1619.         dc.b %00110000
  1620.         dc.b %00110000
  1621.         dc.b %00110110
  1622.         dc.b %00011100
  1623.         dc.b %00000000
  1624.  
  1625.         dc.b %00000000
  1626.         dc.b %00000000
  1627.         dc.b %01100110
  1628.         dc.b %01100110
  1629.         dc.b %01100110
  1630.         dc.b %01100110
  1631.         dc.b %00111110
  1632.         dc.b %00000000
  1633.  
  1634.         dc.b %00000000
  1635.         dc.b %00000000
  1636.         dc.b %01100110
  1637.         dc.b %01100110
  1638.         dc.b %01100110
  1639.         dc.b %00111100
  1640.         dc.b %00011000
  1641.         dc.b %00000000
  1642.  
  1643.         dc.b %00000000
  1644.         dc.b %00000000
  1645.         dc.b %11000110
  1646.         dc.b %11010110
  1647.         dc.b %11010110
  1648.         dc.b %11111110
  1649.         dc.b %01101100
  1650.         dc.b %00000000
  1651.  
  1652.         dc.b %00000000
  1653.         dc.b %00000000
  1654.         dc.b %11000110
  1655.         dc.b %01101100
  1656.         dc.b %00111000
  1657.         dc.b %01101100
  1658.         dc.b %11000110
  1659.         dc.b %00000000
  1660.  
  1661.         dc.b %00000000
  1662.         dc.b %00000000
  1663.         dc.b %01100110
  1664.         dc.b %01100110
  1665.         dc.b %01100110
  1666.         dc.b %00111110
  1667.         dc.b %00000110
  1668.         dc.b %01111100
  1669.  
  1670.         dc.b %00000000
  1671.         dc.b %00000000
  1672.         dc.b %01111110
  1673.         dc.b %01001100
  1674.         dc.b %00011000
  1675.         dc.b %00110010
  1676.         dc.b %01111110
  1677.         dc.b %00000000
  1678.  
  1679.         even
  1680.  
  1681.         ENDC
  1682. _cls0:
  1683.         move.l #2559,d0
  1684.         moveq #0,d1
  1685.         move.l plane0,a0
  1686.         move.l plane1,a1
  1687.         move.l plane2,a2
  1688.         move.l plane3,a3
  1689.         move.l plane4,a4
  1690.         move.l plane5,a5
  1691. _cls2:
  1692.         move.l d1,(a0)+
  1693.         move.l d1,(a1)+
  1694.         move.l d1,(a2)+
  1695.         move.l d1,(a3)+
  1696.         move.l d1,(a4)+
  1697.         move.l d1,(a5)+
  1698.         dbra d0,_cls2
  1699.         rts
  1700.  
  1701. ;********************************************************
  1702. ; delz   = delete Zeichen **
  1703. ; anfang = Adresse des Input Strings **
  1704. ; D3 = xPos des Strings ;D4 = yPos des Strings
  1705. ; entlong = max Länge des Strings
  1706. ;Aufruf:
  1707. ;        lea string(pc),a0
  1708. ;        move.l a0,anfang
  1709. ;        move.b #laenge,entlong
  1710. ;        moveq #x,d3
  1711. ;        moveq #y,d4
  1712. ;        bsr _entername
  1713. ;    by   K D M
  1714. ;********************************************************
  1715.         ifne input__
  1716. _entername:
  1717.         move.w d3,_entx
  1718.         move.w d4,_enty
  1719.         move.b #"-",_delz
  1720.         move.l _anfang,a2
  1721.         move.l a2,_zeiger        
  1722.         move.b _delz,(a2)
  1723. _entername2:
  1724.         ptext _farbe2,_entx,_enty,_anfang
  1725.         bsr _getch
  1726.         bsr _test_taste
  1727.         cmp.b #0,d0
  1728.         beq _entername2
  1729.         cmp.b #13,d0
  1730.         beq _ente
  1731.         cmp.b #8,d0
  1732.         beq _delete
  1733.         cmp.b #127,d0
  1734.         beq _delete
  1735.  
  1736.         move.l _anfang,d2
  1737.         move.l _zeiger,d3
  1738.         sub.l d2,d3
  1739.         move.b _entlong,d1
  1740.         and.l #255,d1
  1741.         cmp.l d3,d1
  1742.         beq _last_colon
  1743.  
  1744.         move.l _zeiger,a0
  1745.         move.b d0,(a0)+
  1746.         move.b _delz,(a0)
  1747.         move.l a0,_zeiger
  1748.         bra _entername2
  1749.  
  1750. _delete:
  1751.         move.l _anfang,d2
  1752.         move.l _zeiger,d3
  1753.         sub.l d2,d3
  1754.         cmp.l #0,d3
  1755.         beq _delete0
  1756.         move.l _zeiger,a0
  1757.         move.b #" ",(a0)
  1758.         move.b _delz,-(a0)
  1759.         move.l a0,_zeiger
  1760.         bra _entername2
  1761.  
  1762. _delete0:
  1763.         move.l _zeiger,a0
  1764.         move.b #"-",(a0)
  1765.         move.b #" ",1(a0)
  1766.         bra _entername2
  1767.  
  1768. _last_colon:
  1769.         move.l _zeiger,a0
  1770.         move.b d0,-1(a0)
  1771.         move.b _delz,(a0)
  1772.         bra _entername2
  1773.  
  1774. _ente:
  1775.         move.l _zeiger,a0
  1776.         move.l _anfang,a1
  1777.         cmp.l a0,a1
  1778.         beq _entername2
  1779.         move.b #0,(a0)
  1780.         rts
  1781.         ENDC
  1782.  
  1783. _codes:        dc.l 0
  1784. _zeiger:    dc.l 0
  1785. _anfang:    dc.l 0
  1786. _entx:        dc.w 0
  1787. _enty:        dc.w 0
  1788. _farbe2:    dc.w 0
  1789. _entlong:    dc.b 0
  1790. _delz:        dc.b 0
  1791.  
  1792.         even
  1793.  
  1794. ;-----------------------------------------------------
  1795. ;-----------------------------------------------------
  1796. ; ** getch **
  1797. ; in  => none 
  1798. ; out => d0.w tastencode
  1799. ;-----------------------------------------------------
  1800. ;-----------------------------------------------------
  1801.  
  1802. _getch:
  1803.         moveq #0,d0         
  1804.         jsr _syskey
  1805.         lea _keyasctab2,a0
  1806.         move.b 0(a0,d0),d0
  1807.         rts
  1808.  
  1809. _keyasctab:    dc.b 0,"1234567890-=\",0,"0"
  1810.         dc.b "QWERTZUIOP*+",0,111,112,113
  1811.         dc.b "ASDFGHJKL:",0,0,0,114,115,116
  1812.         dc.b 0,"YXCVBNM,./",0,".",117,118,119
  1813.         dc.b " ",8,9,$d,$d,96,127,0,0,0,0,0,28,29,30,31
  1814.         dc.b 97,98,99,100,101,102,103,104,105,106,107,108,109,0,0,110
  1815.         dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0        
  1816.  
  1817.         even
  1818.  
  1819. _keyasctab2:    dc.b 0,"1234567890-=\",0,"0"
  1820.         dc.b "QWERTZUIOP*+",0,"123"
  1821.         dc.b "ASDFGHJKL:",0,0,0,"456"
  1822.         dc.b 0,"YXCVBNM,./",0,".","789"
  1823.         dc.b " ",8,9,$d,$d,96,127,0,0,0,0,0,28,29,30,31
  1824.         dc.b 97,98,99,100,101,102,103,104,105,106,107,108,109,0,0,110
  1825.         dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0        
  1826.         ;Tasten Codes
  1827.         ;8=BackSpace
  1828.         ;127=Delete
  1829.         ;13=Return/Enter
  1830.         ;255=Help
  1831.         even
  1832.  
  1833. _tasten_tab:    dc.b "A","B","C","D","E","F","G","H","I","J","K"
  1834.         dc.b "L","M","N","O","P","Q","R","S","T","U","V"
  1835.         dc.b "W","X","Y","Z","1","2","3","4","5","6","7"
  1836.         dc.b "8","9","0","=","?","!"," ","+"
  1837.         dc.b 13,8,127,0
  1838.  
  1839.         even
  1840.  
  1841. _tasten_tab2:    dc.b "1","2","3","4","5","6","7"
  1842.         dc.b "8","9","0",13,8,127,0
  1843.  
  1844.         even
  1845.  
  1846. _test_taste:
  1847.         moveq #0,d1
  1848.         move.l _codes,a0
  1849. _test_taste2:
  1850.         move.b (a0)+,d1
  1851.         beq.s _test_taste0
  1852.         cmp.b d0,d1
  1853.         beq.s _test_taste_back
  1854.         bra.s _test_taste2
  1855.  
  1856. _test_taste0:
  1857.         moveq #0,d0
  1858.         rts
  1859.  
  1860. _test_taste_back:
  1861.         rts
  1862.  
  1863. ;-----------------------------------------------------
  1864. ;-----------------------------------------------------
  1865. ; ** syskey **
  1866. ; in  => none
  1867. ; out => d0.w system tasten code
  1868. ;-----------------------------------------------------
  1869. ;-----------------------------------------------------
  1870.  
  1871. _syskey:    btst #0,$bfec01
  1872.         beq.s _syskey
  1873.         move.b $bfec01,d0
  1874.         move.b #0,$bfec01
  1875.         ror.b #1,d0
  1876.         eor.b #$ff,d0
  1877.         rts
  1878.  
  1879. ;-----------------------------------------------------
  1880. ; ** getch **
  1881. ; in  => none 
  1882. ; out => d0.w tastencode
  1883. ;-----------------------------------------------------
  1884. ;-----------------------------------------------------
  1885.  
  1886. _getch2:
  1887.         moveq #0,d0         
  1888.         jsr _syskey2
  1889.         cmp.b #0,d0
  1890.         beq.s _rts3
  1891.         lea _keyasctab,a0
  1892.         move.b 0(a0,d0),d0
  1893.         move.b #0,$bfec01
  1894. _rts3:        rts
  1895.  
  1896.  
  1897.  
  1898. ;-----------------------------------------------------
  1899. ;-----------------------------------------------------
  1900. ; ** syskey **
  1901. ; in  => none
  1902. ; out => d0.w system tasten code
  1903. ;-----------------------------------------------------
  1904. ;-----------------------------------------------------
  1905.  
  1906. _syskey2:    btst #0,$bfec01
  1907.         beq.s _rts
  1908.         move.b $bfec01,d0
  1909.         move.b #0,$bfec01
  1910.         ror.b #1,d0
  1911.         eor.b #$ff,d0
  1912. _rts:        rts
  1913.  
  1914. ;***************************************
  1915. ;zuzahl = Zufallszahl zwischen 0 - 15 **
  1916. ;by    K D M                          **
  1917. ;***************************************
  1918.  
  1919. _fallzu:
  1920.         move.b $bfe801,d0
  1921.         move.b $dff000+6,d1
  1922.         eor.b d1,d0
  1923.         and.l #15,d0        ;Zahl zwischen 0 - 15
  1924.         addq #1,d0
  1925.         move.b d0,_zuzahl
  1926.         rts
  1927.  
  1928.  
  1929. _zuzahl:    dc.b 0,0,0,0,0,0,0,0
  1930.  
  1931.         even
  1932.  
  1933. _fallzu16:
  1934.         move.w _zuzahl16,d6
  1935.         mulu #221,d6
  1936.         addq.w #1,d6
  1937.         move.w $dff014,d7
  1938.         eor.w d7,d6
  1939.         and.l #$ffff,d6
  1940.         move.w d6,_zuzahl16
  1941.         rts
  1942. _zuzahl16:    dc.w 0,0
  1943. ;*************************************************************
  1944. ;****** String - Zahl ** in String(Stnumber) ** out number ***
  1945. ;****** Endkennung des Strings = 0
  1946. ;**
  1947. ;** Aufruf:
  1948. ;**        lea zahl(pc),a0        ;Adresse des Strings
  1949. ;**        bsr stzahl
  1950. ;**        move.l d0,number    ;Zahl sichern
  1951. ;**        by KDM
  1952. ;*************************************************************
  1953.         ifne zahl2__
  1954. _stzahl:
  1955.         move.l a0,_stnumber
  1956.         bsr _istzahl
  1957.         tst.b d0
  1958.         bne.s _stzahl0
  1959.         moveq #0,d0
  1960.         move.l d0,_number
  1961.         rts
  1962. _stzahl0:
  1963.         move.l _stnumber,a0
  1964.         moveq #0,d0
  1965.         moveq #0,d1        ;zähler
  1966.         lea _stmulti(pc),a3    ;Multiplikator
  1967.         move.l d1,_number    ;alte Zahl löschen
  1968. _stzahlloop:
  1969.         move.b (a0)+,d0        ;erstes Zeichen
  1970.         cmp.b #0,d0
  1971.         beq.s _stzahlgef
  1972.         bra _stzahlloop
  1973.  
  1974. _stzahlgef:
  1975.         sub.l #2,a0        ;Zeiger auf Ende
  1976.         move.l _stnumber,a1
  1977.         sub.l #1,a1
  1978.         cmp.l a0,a1
  1979.         beq _nostzahl
  1980.         add.l #1,a1
  1981. _stzahlconv:
  1982.         move.b (a0),d0
  1983.         sub.b #48,d0
  1984.         move.l (a3)+,d2
  1985.         cmp.b 0,d0
  1986.         beq _jadd
  1987.         move.b d0,d5
  1988.         and.l #$ff,d5
  1989.         sub.l d0,d0
  1990.         subq #1,d5
  1991. _emul:
  1992.         add.l d2,d0
  1993.         dbra d5,_emul
  1994. _jadd:        add.l d0,_number
  1995.         cmp.l a0,a1
  1996.         beq.s _stback
  1997.         sub.l #1,a0
  1998.         moveq #0,d0
  1999.         bra _stzahlconv
  2000.  
  2001. _nostzahl:
  2002. _stback:    move.l _number,d0
  2003.         rts
  2004.  
  2005. _stnumber:    dc.l 0
  2006. _number:    dc.l 0
  2007. _stmulti:    dc.l 1,10,100,1000
  2008.         dc.l 10000
  2009.         dc.l 100000
  2010.         dc.l 1000000
  2011.         dc.l 10000000
  2012.         dc.l 100000000
  2013.         dc.l 1000000000 
  2014.         dc.l 0
  2015.         ENDC
  2016.  
  2017. ;*********************************************************
  2018. ;*****  Zahl - String *** in - zzahl ** out - z         *
  2019. ;*** Aufruf:  
  2020. ;***        move.l zahl,d0
  2021. ;***        bsr zstring
  2022. ;***        text #3,#8,#8,#z
  2023. ;***        by KDM
  2024. ;********************************************************
  2025.         ifne zahl__
  2026. _zstring:
  2027.         move.l d0,_zzahl
  2028.         move.b #0,_zvor
  2029.         tst.l d0
  2030.         beq _zerozahl
  2031.         tst.l d0
  2032.         bpl _zstringpos
  2033.         neg.l _zzahl
  2034.         move.b #1,_zvor
  2035. _zstringpos:
  2036.         lea _z(pc),a0
  2037.         bsr _zstringclr
  2038.         addq #1,a0
  2039.         lea _zzahlminus(pc),a1
  2040.         add.l #1,_zzahl
  2041. _stringa:
  2042.         moveq #0,d2
  2043.         move.l (a1)+,d0
  2044.         move.l _zzahl,d1
  2045.         cmp.l #0,d0
  2046.         beq _stringende
  2047. _stringa2:
  2048.         addq #1,d2
  2049.         sub.l d0,d1
  2050.         cmp.l #0,d1        ;kleiner gleich 0
  2051.         ble _stringa5        ;dann nächste Subtrahent
  2052.         bra _stringa2
  2053. _stringa5:
  2054.         add.l d0,d1
  2055.         move.l d1,_zzahl
  2056.         add.l #47,d2
  2057.         move.b d2,(a0)+    
  2058.         bra _stringa
  2059. _zstringclr:
  2060.         move.l a0,a1
  2061.         moveq #14,d0
  2062. _zstringclr2:
  2063.         move.b #0,(a1)+
  2064.         dbra d0,_zstringclr2        
  2065.         rts
  2066. _stringende:
  2067.         lea _z(pc),a0
  2068.         move.b #"0",(a0)
  2069.         moveq #0,d0
  2070. _stringendeb:
  2071.         move.b (a0),d0
  2072.         cmp.b #"0",d0
  2073.         bne.s _stringebc
  2074.         move.b #" ",(a0)+
  2075.         bra _stringendeb    
  2076. _stringebc:
  2077.         move.b _zvor,d0
  2078.         tst.b d0
  2079.         beq.s _stringende2
  2080.         subq #1,a0
  2081.         move.b #"-",(a0)
  2082. _stringende2:
  2083.         lea _z(pc),a0
  2084.         move.l a0,a1
  2085.         moveq #0,d1
  2086.         moveq #0,d3
  2087. _stringende3:
  2088.         move.b (a0)+,d1
  2089.         cmp.b #" ",d1
  2090.         beq.s _stringende3
  2091.         subq #1,a0
  2092. _stringende4:
  2093.         move.b (a0),d3
  2094.         cmp.b #0,d3
  2095.         beq.s _stringende5
  2096.         move.b (a0)+,(a1)+
  2097.         bra _stringende4
  2098. _stringende5:
  2099.         move.b #0,(a1)
  2100.         rts
  2101. _zerozahl:
  2102.         lea _z(pc),a0
  2103.         bsr _zstringclr
  2104.         move.b #"0",(a0)+
  2105.         move.b #0,(a0)
  2106.         rts
  2107. _zzahlminus:
  2108.         dc.l 1000000000
  2109.         dc.l 100000000
  2110.         dc.l 10000000
  2111.         dc.l 1000000
  2112.         dc.l 100000
  2113.         dc.l 10000
  2114.         dc.l 1000
  2115.         dc.l 100
  2116.         dc.l 10
  2117.         dc.l 1
  2118.         dc.l 0
  2119.  
  2120. _zzahl:        dc.l 0
  2121. _z:        dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  2122. _zvor:        dc.b 0
  2123.  
  2124.         even
  2125.  
  2126. _rbuendig:
  2127.         move.l d0,_zzahl
  2128.         cmp.l #0,_zzahl
  2129.         bge _rb1
  2130.         sub.w #1,_xcoord
  2131.         neg.l _zzahl
  2132. _rb1:
  2133.         cmp.l #9,_zzahl
  2134.         bgt _rb10
  2135.         rts
  2136. _rb10:
  2137.         cmp.l #99,_zzahl
  2138.         bgt _rb100
  2139.         sub.w #1,_xcoord
  2140.         rts
  2141. _rb100:
  2142.         cmp.l #999,_zzahl
  2143.         bgt _rb1000
  2144.         sub.w #2,_xcoord
  2145.         rts
  2146. _rb1000:
  2147.         cmp.l #9999,_zzahl
  2148.         bgt _rb10000
  2149.         sub.w #3,_xcoord
  2150.         rts
  2151. _rb10000:
  2152.         cmp.l #99999,_zzahl
  2153.         bgt _rb100000
  2154.         sub.w #4,_xcoord
  2155.         rts
  2156. _rb100000:
  2157.         cmp.l #999999,_zzahl
  2158.         bgt _rb1000000
  2159.         sub.w #5,_xcoord
  2160.         rts
  2161. _rb1000000:
  2162.         cmp.l #9999999,_zzahl
  2163.         bgt _rb10000000
  2164.         sub.w #6,_xcoord
  2165.         rts
  2166. _rb10000000:
  2167.         cmp.l #99999999,_zzahl
  2168.         bgt _rb100000000
  2169.         sub.w #7,_xcoord
  2170.         rts
  2171. _rb100000000:
  2172.         cmp.l #999999999,_zzahl
  2173.         bgt _rb1000000000
  2174.         sub.w #8,_xcoord
  2175.         rts
  2176. _rb1000000000:
  2177.         sub.w #9,_xcoord
  2178.         rts
  2179.         ENDC
  2180.  
  2181. ;*******************************************
  2182. ; On d0 goto
  2183. ;Aufruf:
  2184. ;    move.b taste,d0
  2185. ;    lea table(pc),a0
  2186. ;    lea key(pc),a1
  2187. ;    bra ongoto
  2188. ;
  2189. ;table:    dc.l label1,label2,label3,aufruf
  2190. ;key:    dc.b "1","2","3",0
  2191. ;    by KDM
  2192. ;*******************************************
  2193. ongoto:
  2194.         moveq #0,d2
  2195.         moveq #0,d1
  2196. ongoto2:
  2197.         move.b (a1)+,d1
  2198.         cmp.b d0,d1
  2199.         beq.s ongoto3
  2200.         cmp.b #0,d1
  2201.         beq.s ongoto3
  2202.         addq #1,d2
  2203.         bra ongoto2
  2204. ongoto3:
  2205.         lsl #2,d2
  2206.         move.l 0(a0,d2),a0
  2207.         jmp (a0)
  2208.  
  2209.  
  2210. ;***********************************************
  2211. ;Überprüfung eines Strings ob Zahl
  2212. ;Aufruf:
  2213. ;    lea string(pc),a0
  2214. ;    bsr istzahl
  2215. ;    tst.b d0
  2216. ;    beq.s nozahl
  2217. ;    by KDM
  2218. ;***********************************************
  2219.  
  2220. _istzahl:
  2221.                moveq #0,d0
  2222. _istzahl2:
  2223.         move.b (a0)+,d0        
  2224.         cmp.b #0,d0
  2225.         beq.s _istzahl99
  2226.         sub.b #48,d0
  2227.         cmp.b #0,d0
  2228.         blt _istzahl00
  2229.         cmp.b #9,d0
  2230.         bgt _istzahl00
  2231.         bra _istzahl2
  2232. _istzahl99:
  2233.         moveq #1,d0
  2234.         rts
  2235. _istzahl00:
  2236.         moveq #0,d0
  2237.         rts
  2238.  
  2239.  
  2240. _m_r:
  2241.         move.b $dff016,d0    ;rechte Maustaste
  2242.         and.l #15,d0        ;gedrückt = 1
  2243.         cmp.b #1,d0
  2244.         bne.s _m_r
  2245.         rts
  2246.  
  2247.  
  2248. _bsave:
  2249.         move.b #0,_frontback
  2250.         set_pointer #1
  2251.         cmp.b #0,_bv
  2252.         beq.s _bsaveok
  2253.         front
  2254.         move.b #1,_frontback
  2255. _bsaveok:    
  2256.         bsr _neue_adr
  2257.         move.l #1,_ioerror
  2258.         bsr _dosopen
  2259.         move.l _modus,d2
  2260.         move.l _modus,d0
  2261.         move.l _dosbase,a6
  2262.         move.l _name_save,d1
  2263.         jsr open(a6)
  2264.         move.l d0,_filehd
  2265.         move.l d0,_ioerror
  2266.         tst.l d0
  2267.         beq.s _save2
  2268.         move.l _anfang_save,d2    ;Anfang der Daten
  2269.         move.l _lang_save,d3    ;Laenge
  2270.         move.l _dosbase,a6
  2271.         move.l _filehd,d1
  2272.         jsr write(a6)
  2273.         move.l d0,_ioerror
  2274.         move.l _dosbase,a6
  2275.         move.l _filehd,d1
  2276.         jsr close(a6)
  2277. _save2:        bsr _dosclose
  2278.         cmp.l #0,_ioerror
  2279.         beq _bsave
  2280.         set_pointer #0
  2281.         cmp.b #1,_frontback
  2282.         beq _richten
  2283.         rts
  2284.  
  2285. _warte:
  2286.         bsr _dosopen
  2287.         move.l _wait,d1
  2288.         move.l _dosbase,a6
  2289.         jsr -198(a6)
  2290.         bsr _dosclose
  2291.         rts
  2292.  
  2293. _bload:
  2294.         move.b #0,_frontback
  2295.         set_pointer #1
  2296.         cmp.b #0,_bv
  2297.         beq.s _bloadok
  2298.         front
  2299.         move.b #1,_frontback
  2300. _bloadok:
  2301.         bsr _neue_adr
  2302.         move.l #1,_ioerror
  2303.         bsr _dosopen
  2304.         move.l #1005,d2
  2305.         move.l _dosbase,a6
  2306.         move.l _name_load,d1
  2307.         jsr open(a6)
  2308.         move.l d0,_filehd
  2309.         move.l d0,_ioerror
  2310.         tst.l d0
  2311.         beq.s _bload3
  2312.         move.l _anfang_load,d2
  2313.         move.l _dosbase,a6
  2314.         move.l _filehd,d1
  2315.         move.l _lang_load,d3
  2316.         jsr read(a6)
  2317.         move.l d0,_ioerror
  2318.         move.l d0,d6
  2319.         move.l _dosbase,a6
  2320.         move.l _filehd,d1
  2321.         jsr close(a6)
  2322. _bload2:    bsr _dosclose
  2323.         cmp.l #0,_ioerror
  2324.         beq _bload
  2325.         ble _bload
  2326.         set_pointer #0
  2327.         cmp.b #1,_frontback
  2328.         beq _richten
  2329.         rts
  2330. _bload3:
  2331.         move.l _dosbase,a6
  2332.         jsr -132(a6)            ;welcher Fehler
  2333.         cmp.b #205,d0
  2334.         beq _bload4
  2335.         bra _bload
  2336. _bload4:
  2337.         bsr _dosclose
  2338.         move.l #-1,_ioerror
  2339.         set_pointer #0
  2340.         cmp.b #1,_frontback
  2341.         beq _richten
  2342.         rts
  2343. _richten:
  2344.         back
  2345.         bsr _neue_adr
  2346.         rts
  2347.  
  2348. _name_save:    dc.l 0
  2349. _anfang_save:    dc.l 0
  2350. _lang_save:    dc.l 0
  2351. _name_load:    dc.l 0
  2352. _anfang_load:    dc.l 0
  2353. _lang_load:    dc.l 0
  2354. _modus:        dc.l 0
  2355. _ioerror:    dc.l 0
  2356. _koord:        dc.l 0
  2357. _frontback:    dc.b 0
  2358.         even
  2359.  
  2360. ;*******************************************
  2361. ; _compare
  2362. ;        lea string1(pc),a0
  2363. ;        lea string2(pc),a1
  2364. ;        bsr _compare
  2365. ;        tst.b d0
  2366. ;        beq beide_gleich
  2367. ;    by KDM
  2368. ;*******************************************
  2369.  
  2370. _compare:
  2371.         moveq #0,d0
  2372.         moveq #0,d1
  2373. _compare2:
  2374.         move.b (a0)+,d0
  2375.         beq _compare6
  2376.         move.b (a1)+,d1
  2377.         beq _compare6
  2378.         cmp.b d0,d1
  2379.         bne.s _compare5
  2380.         bra.s _compare2
  2381.  
  2382. _compare5:
  2383.         moveq #1,d0
  2384.         rts
  2385.  
  2386. _compare6:
  2387.         moveq #0,d0
  2388.         rts
  2389.  
  2390. ;********************************************
  2391. ;wartet auf Maus oder Tasten Druck
  2392.  
  2393. _bf_2b:        key
  2394.         cmp.b #0,d0
  2395.         beq.s _bf_2c
  2396.         rts
  2397. _bf_2c:        btst #6,$bfe001
  2398.         bne.s _bf_2d
  2399.         cmp.b #0,maus_click
  2400.         bne.s _bf_2b
  2401.         bra.s _bf_2e
  2402.  
  2403. _bf_2d:        move.b #0,maus_click
  2404.         bra.s _bf_2b
  2405. _bf_2e:
  2406.         move.b #1,maus_click
  2407.         rts
  2408.  
  2409. _down:
  2410.         move.l #0,_koord
  2411. _down0:        move.l _intbase,a6
  2412.         move.l _screenhd,a0
  2413.         moveq #0,d0
  2414.         move.l _koord,d1
  2415.         jsr -$a2(a6)
  2416.         add.l #1,_koord
  2417.         cmp.l #25,_koord
  2418.         beq _down2
  2419.         bra _down0
  2420. _down2:
  2421.         rts
  2422. _up:
  2423.         move.l #-25,_koord
  2424. _up0:
  2425.         move.l _intbase,a6
  2426.         move.l _screenhd,a0
  2427.         moveq #0,d0
  2428.         move.l _koord,d1
  2429.         jsr -$a2(a6)
  2430.         add.l #1,_koord
  2431.         cmp.l #-1,_koord
  2432.         beq _up3
  2433.         bra _up0
  2434. _up3:
  2435.         rts
  2436.  
  2437. _get_anz:
  2438.         move.l a0,a2
  2439.         move.l #-1,d0
  2440.         moveq #0,d1
  2441. _get_anz2:
  2442.         move.b (a2)+,d1
  2443.         addq #1,d0
  2444.         cmp.b #0,d1
  2445.         bne.s _get_anz2
  2446.         rts
  2447.  
  2448. _to_space:    move.l a5,a1
  2449. _to_space_loop:
  2450.         cmp.b #0,(a1)
  2451.         beq.s _to_space_end
  2452.         cmp.b #"_",(a1)
  2453.         beq.s _to_space3
  2454. _to_space2:    add.l #1,a1
  2455.         bra.s _to_space_loop
  2456.  
  2457. _to_space3:
  2458.         move.b #" ",(a1)
  2459.         bra.s _to_space2
  2460.  
  2461. _to_space_end:    rts
  2462.  
  2463. _set_kasten:
  2464.         move.w d0,_pos55
  2465.         move.l _y_aus,d5    ;Y Ausdehnung
  2466. _kast_loop0:
  2467.         move.l _x_aus,d4    ;X Ausdehnung
  2468. _kast_loop:
  2469.         move.w (a5)+,d2
  2470.         and.l #$ffff,d2
  2471.         move.l d2,d3
  2472.         lsl.w #5,d2        ;* 48
  2473.         lsl.w #4,d3
  2474.         add.l d3,d2
  2475.         move.l _grafset,a6
  2476.         add.l d2,a6
  2477.  
  2478.         movem.l d0-d7/a0-a6,-(a7)
  2479.         move.l plane0,a0
  2480.         move.l plane1,a1
  2481.         move.l plane2,a2
  2482.         move.l plane3,a3
  2483.         move.l plane4,a4
  2484.         move.l plane5,a5
  2485.         move.l d1,d2
  2486.         lsl.w #5,d1        ;* 40
  2487.         lsl.w #3,d2
  2488.         add.l d2,d1
  2489.         add.l d1,d0
  2490.         add.l d0,a0
  2491.         add.l d0,a1
  2492.         add.l d0,a2
  2493.         add.l d0,a3
  2494.         add.l d0,a4
  2495.         add.l d0,a5
  2496.  
  2497.         move.b (a6),(a0)
  2498.         move.b 1(a6),40(a0)
  2499.         move.b 2(a6),80(a0)
  2500.         move.b 3(a6),120(a0)
  2501.         move.b 4(a6),160(a0)
  2502.         move.b 5(a6),200(a0)
  2503.         move.b 6(a6),240(a0)
  2504.         move.b 7(a6),280(a0)
  2505.  
  2506.         move.b 8(a6),(a1)
  2507.         move.b 9(a6),40(a1)
  2508.         move.b 10(a6),80(a1)
  2509.         move.b 11(a6),120(a1)
  2510.         move.b 12(a6),160(a1)
  2511.         move.b 13(a6),200(a1)
  2512.         move.b 14(a6),240(a1)
  2513.         move.b 15(a6),280(a1)
  2514.  
  2515.         move.b 16(a6),(a2)
  2516.         move.b 17(a6),40(a2)
  2517.         move.b 18(a6),80(a2)
  2518.         move.b 19(a6),120(a2)
  2519.         move.b 20(a6),160(a2)
  2520.         move.b 21(a6),200(a2)
  2521.         move.b 22(a6),240(a2)
  2522.         move.b 23(a6),280(a2)
  2523.  
  2524.         move.b 24(a6),(a3)
  2525.         move.b 25(a6),40(a3)
  2526.         move.b 26(a6),80(a3)
  2527.         move.b 27(a6),120(a3)
  2528.         move.b 28(a6),160(a3)
  2529.         move.b 29(a6),200(a3)
  2530.         move.b 30(a6),240(a3)
  2531.         move.b 31(a6),280(a3)
  2532.  
  2533.         move.b 32(a6),(a4)
  2534.         move.b 33(a6),40(a4)
  2535.         move.b 34(a6),80(a4)
  2536.         move.b 35(a6),120(a4)
  2537.         move.b 36(a6),160(a4)
  2538.         move.b 37(a6),200(a4)
  2539.         move.b 38(a6),240(a4)
  2540.         move.b 39(a6),280(a4)
  2541.  
  2542.         move.b 40(a6),(a5)
  2543.         move.b 41(a6),40(a5)
  2544.         move.b 42(a6),80(a5)
  2545.         move.b 43(a6),120(a5)
  2546.         move.b 44(a6),160(a5)
  2547.         move.b 45(a6),200(a5)
  2548.         move.b 46(a6),240(a5)
  2549.         move.b 47(a6),280(a5)
  2550.  
  2551.         movem.l (a7)+,d0-d7/a0-a6
  2552.  
  2553.         addq.w #1,d0
  2554.         dbra d4,_kast_loop
  2555.         move.w _pos55,d0
  2556.         addq.w #8,d1
  2557.         dbra d5,_kast_loop0
  2558.         rts
  2559.  
  2560. _pos55:        dc.w 0
  2561. _x_aus:        dc.l 0
  2562. _y_aus:        dc.l 0,0
  2563.  
  2564. _set_ein_kasten:
  2565.         move.l d1,d3
  2566.         lsl.w #5,d1        ;y Pos * 40
  2567.         lsl.w #3,d3
  2568.         add.l d3,d1
  2569.         add.l d1,d0
  2570.  
  2571.         move.l d2,d3
  2572.         lsl.w #5,d2        ;* 48
  2573.         lsl.w #4,d3
  2574.         add.l d3,d2
  2575.         add.l d2,a6
  2576.  
  2577.         move.l plane0,a0
  2578.         move.l plane1,a1
  2579.         move.l plane2,a2
  2580.         move.l plane3,a3
  2581.         move.l plane4,a4
  2582.         move.l plane5,a5
  2583.         add.l d0,a0
  2584.         add.l d0,a1
  2585.         add.l d0,a2
  2586.         add.l d0,a3
  2587.         add.l d0,a4
  2588.         add.l d0,a5
  2589.  
  2590.         move.b (a6),(a0)
  2591.         move.b 1(a6),40(a0)
  2592.         move.b 2(a6),80(a0)
  2593.         move.b 3(a6),120(a0)
  2594.         move.b 4(a6),160(a0)
  2595.         move.b 5(a6),200(a0)
  2596.         move.b 6(a6),240(a0)
  2597.         move.b 7(a6),280(a0)
  2598.  
  2599.         move.b 8(a6),(a1)
  2600.         move.b 9(a6),40(a1)
  2601.         move.b 10(a6),80(a1)
  2602.         move.b 11(a6),120(a1)
  2603.         move.b 12(a6),160(a1)
  2604.         move.b 13(a6),200(a1)
  2605.         move.b 14(a6),240(a1)
  2606.         move.b 15(a6),280(a1)
  2607.  
  2608.         move.b 16(a6),(a2)
  2609.         move.b 17(a6),40(a2)
  2610.         move.b 18(a6),80(a2)
  2611.         move.b 19(a6),120(a2)
  2612.         move.b 20(a6),160(a2)
  2613.         move.b 21(a6),200(a2)
  2614.         move.b 22(a6),240(a2)
  2615.         move.b 23(a6),280(a2)
  2616.  
  2617.         move.b 24(a6),(a3)
  2618.         move.b 25(a6),40(a3)
  2619.         move.b 26(a6),80(a3)
  2620.         move.b 27(a6),120(a3)
  2621.         move.b 28(a6),160(a3)
  2622.         move.b 29(a6),200(a3)
  2623.         move.b 30(a6),240(a3)
  2624.         move.b 31(a6),280(a3)
  2625.  
  2626.         move.b 32(a6),(a4)
  2627.         move.b 33(a6),40(a4)
  2628.         move.b 34(a6),80(a4)
  2629.         move.b 35(a6),120(a4)
  2630.         move.b 36(a6),160(a4)
  2631.         move.b 37(a6),200(a4)
  2632.         move.b 38(a6),240(a4)
  2633.         move.b 39(a6),280(a4)
  2634.  
  2635.         move.b 40(a6),(a5)
  2636.         move.b 41(a6),40(a5)
  2637.         move.b 42(a6),80(a5)
  2638.         move.b 43(a6),120(a5)
  2639.         move.b 44(a6),160(a5)
  2640.         move.b 45(a6),200(a5)
  2641.         move.b 46(a6),240(a5)
  2642.         move.b 47(a6),280(a5)
  2643.         rts
  2644.  
  2645. _get_joy:
  2646.         moveq #0,d2
  2647.         move.w #0,$dff036
  2648.         move.w (a0),d0
  2649.         cmp.w #$0100,d0
  2650.         bne.s _joy_unten
  2651.         moveq #1,d2
  2652.         bra.s _joy_fire
  2653. _joy_unten:
  2654.         cmp.w #$0001,d0
  2655.         bne.s _joy_left
  2656.         moveq #3,d2
  2657.         bra.s _joy_fire
  2658. _joy_left:
  2659.         cmp.w #$0300,d0
  2660.         bne.s _joy_right
  2661.         moveq #4,d2
  2662.         bra.s _joy_fire
  2663. _joy_right:
  2664.         cmp.w #$0003,d0
  2665.         bne.s _joy_fire
  2666.         moveq #2,d2
  2667. _joy_fire:
  2668.         cmp.b #0,d1
  2669.         bne.s _joy_fire1
  2670.         and.b #64,$bfe001
  2671.         bne.s _joy_end
  2672.         moveq #1,d1
  2673.         rts
  2674. _joy_fire1:
  2675.         and.b #128,$bfe001
  2676.         bne.s _joy_end
  2677.         moveq #1,d1
  2678.         rts
  2679. _joy_end:
  2680.         moveq #0,d1
  2681.         rts
  2682.  
  2683. ;**************** Punkt setzen *****************
  2684. ;d0.w x *** d1.w y *** d2.w color
  2685. _set0:
  2686.         move.l plane0,a0
  2687.         move.l plane1,a1
  2688.         move.l plane2,a2
  2689.         move.l plane3,a3
  2690.         move.l plane4,a4
  2691.         move.l plane5,a5
  2692.         move.w d1,d3
  2693.         lsl.w #3,d3        ;*8
  2694.         lsl.w #5,d1        ;*32
  2695.         add.w d3,d1        ;Y-Pos
  2696.         move.w d0,d3        ;x Puffern
  2697.         lsr.w #3,d0        ;welches Byte in der Reihe
  2698.         add.w d0,d1        ;offset
  2699.         lsl.w #3,d0
  2700.         sub.w d0,d3        ;hier steht das zu ändernde Bit
  2701.  
  2702.         and.l #255,d3
  2703.         bsr _bit_wandel
  2704.  
  2705.         roxr.b #1,d2
  2706.         bcs.s _set_pl0
  2707.         bclr.b d3,0(a0,d1.w)
  2708. _set_tst1:
  2709.         roxr.b #1,d2
  2710.         bcs.s _set_pl1
  2711.         bclr.b d3,0(a1,d1.w)
  2712. _set_tst2:
  2713.         roxr.b #1,d2
  2714.         bcs.s _set_pl2
  2715.         bclr.b d3,0(a2,d1.w)
  2716. _set_tst3:
  2717.         roxr.b #1,d2
  2718.         bcs.s _set_pl3
  2719.         bclr.b d3,0(a3,d1.w)
  2720. _set_tst4:
  2721.         roxr.b #1,d2
  2722.         bcs.s _set_pl4
  2723.         bclr.b d3,0(a4,d1.w)
  2724. _set_tst5:
  2725.         roxr.b #1,d2
  2726.         bcs.s _set_pl5
  2727.         bclr.b d3,0(a5,d1.w)
  2728.         rts
  2729. _set_pl0:
  2730.         bset.b d3,0(a0,d1.w)
  2731.         bra.s _set_tst1
  2732. _set_pl1:
  2733.         bset.b d3,0(a1,d1.w)
  2734.         bra.s _set_tst2
  2735. _set_pl2:
  2736.         bset.b d3,0(a2,d1.w)
  2737.         bra.s _set_tst3
  2738. _set_pl3:
  2739.         bset.b d3,0(a3,d1.w)
  2740.         bra.s _set_tst4
  2741. _set_pl4:
  2742.         bset.b d3,0(a4,d1.w)
  2743.         bra.s _set_tst5
  2744. _set_pl5:
  2745.         bset.b d3,0(a5,d1.w)
  2746.         rts
  2747. _bit_wandel:
  2748.         cmp.b #7,d3
  2749.         bne.s _bit_w6
  2750.         moveq #0,d3
  2751.         rts
  2752. _bit_w6:
  2753.         cmp.b #6,d3
  2754.         bne.s _bit_w5
  2755.         moveq #1,d3
  2756.         rts
  2757. _bit_w5:
  2758.         cmp.b #5,d3
  2759.         bne.s _bit_w4
  2760.         moveq #2,d3
  2761.         rts
  2762. _bit_w4:
  2763.         cmp.b #4,d3
  2764.         bne.s _bit_w3
  2765.         moveq #3,d3
  2766.         rts
  2767. _bit_w3:
  2768.         cmp.b #3,d3
  2769.         bne.s _bit_w2
  2770.         moveq #4,d3
  2771.         rts
  2772. _bit_w2:
  2773.         cmp.b #2,d3
  2774.         bne.s _bit_w1
  2775.         moveq #5,d3
  2776.         rts
  2777. _bit_w1:
  2778.         cmp.b #1,d3
  2779.         bne.s _bit_w0
  2780.         moveq #6,d3
  2781.         rts
  2782. _bit_w0:
  2783.         cmp.b #0,d3
  2784.         moveq #7,d3
  2785.         rts
  2786.  
  2787.  
  2788. _sort_l:
  2789.         sub.l #1,d0
  2790.         move.l d0,d1
  2791.         move.l d0,d2
  2792.         move.l a0,a1
  2793.         move.l a0,a2
  2794.  
  2795. _sort_lloop0:
  2796.         move.l (a0),d3
  2797.         move.l d3,d4
  2798.  
  2799. _sort_lloop1:
  2800.         cmp.l (a0)+,d3
  2801.         bgt _sort_ltausch
  2802. _sort_lloop2:
  2803.         dbra d0,_sort_lloop1
  2804.         move.l d3,(a2)
  2805.         move.l d4,(a1)+
  2806.         move.l a1,a0
  2807.         move.l a0,a2
  2808.         sub.l #1,d2
  2809.         move.l d2,d0
  2810.         dbra d1,_sort_lloop0
  2811.         rts
  2812.  
  2813. _sort_ltausch:
  2814.         cmp.l -4(a0),d4
  2815.         blt _sort_lloop2
  2816.         move.l -4(a0),d4        ;kleinere Zahl gefunden
  2817.         move.l a0,a2
  2818.         sub.l #4,a2
  2819.         bra.s _sort_lloop2
  2820.  
  2821. _sort_w:
  2822.         sub.l #1,d0
  2823.         move.l d0,d1
  2824.         move.l d0,d2
  2825.         move.l a0,a1
  2826.         move.l a0,a2
  2827.  
  2828. _sort_wloop0:
  2829.         move.w (a0),d3
  2830.         move.w d3,d4
  2831.  
  2832. _sort_wloop1:
  2833.         cmp.w (a0)+,d3
  2834.         bgt _sort_wtausch
  2835. _sort_wloop2:
  2836.         dbra d0,_sort_wloop1
  2837.         move.w d3,(a2)
  2838.         move.w d4,(a1)+
  2839.         move.l a1,a0
  2840.         move.l a0,a2
  2841.         sub.l #1,d2
  2842.         move.l d2,d0
  2843.         dbra d1,_sort_wloop0
  2844.         rts
  2845.  
  2846. _sort_wtausch:
  2847.         cmp.w -2(a0),d4
  2848.         blt _sort_wloop2
  2849.         move.w -2(a0),d4        ;kleinere Zahl gefunden
  2850.         move.l a0,a2
  2851.         sub.l #2,a2
  2852.         bra.s _sort_wloop2
  2853.  
  2854.  
  2855. _sort_b:
  2856.         sub.l #1,d0
  2857.         move.l d0,d1
  2858.         move.l d0,d2
  2859.         move.l a0,a1
  2860.         move.l a0,a2
  2861.  
  2862. _sort_bloop0:
  2863.         move.b (a0),d3
  2864.         move.b d3,d4
  2865.  
  2866. _sort_bloop1:
  2867.         cmp.b (a0)+,d3
  2868.         bgt _sort_btausch
  2869. _sort_bloop2:
  2870.         dbra d0,_sort_bloop1
  2871.         move.b d3,(a2)
  2872.         move.b d4,(a1)+
  2873.         move.l a1,a0
  2874.         move.l a0,a2
  2875.         sub.l #1,d2
  2876.         move.l d2,d0
  2877.         dbra d1,_sort_bloop0
  2878.         rts
  2879.  
  2880. _sort_btausch:
  2881.         cmp.b -1(a0),d4
  2882.         blt _sort_bloop2
  2883.         move.b -1(a0),d4        ;kleinere Zahl gefunden
  2884.         move.l a0,a2
  2885.         sub.l #1,a2
  2886.         bra.s _sort_bloop2
  2887.  
  2888. _set_int:
  2889.         moveq #5,d0        ;vbi Interrupt
  2890.         lea _int_strukt,a1
  2891.         move.l a0,18(a1)    ;Adresse der eigenen Routine
  2892.         move.l 4,a6
  2893.         jsr -168(a6)
  2894.         rts
  2895. _kill_int:
  2896.         lea _int_strukt,a1
  2897.         moveq #0,d0
  2898.         move.l 4,a6
  2899.         jsr -174(a6)
  2900.         rts
  2901.  
  2902. _int_strukt:    dc.l 0,0
  2903.         dc.b 2
  2904.         dc.b 0
  2905.         dc.l 0,0,0
  2906.  
  2907.         ifne blitter__
  2908. _objekt:
  2909. _woy:        dc.w 0
  2910. _wox:        dc.w 0
  2911. _boboff:    dc.b 2        ;nur Bob schreiben
  2912. _in:        dc.b 0
  2913. _bly:        dc.w 0        ;Y
  2914. _blx:        dc.w 0        ;X
  2915. _hei:        dc.w 0
  2916. _wowith:    dc.w 0
  2917. _tiefe:        dc.w 6        ;planes
  2918. _image:        dc.l 0        ;grafik Daten
  2919. _shadow_mask:    dc.l 0        ;was wird gesetzt
  2920. _save_puffer:    dc.l 0        ;Hintergrund Puffer
  2921. _coll_mask:    dc.l 0,0,0,0
  2922.  
  2923.  
  2924. ;---- ein Objekt auf Bildschirm printen -----
  2925. ;---- A0 = Objektargs  ; po_bitmap = Zeiger auf Bitmap-Struktur
  2926. ;---- Objekte nicht höher und/oder breiter als Bitmap ---
  2927. ;---- Diese Routine kann PC-Relative assembliert werden ---
  2928. PrintObjekt:
  2929.  lea _bitmap2(pc),a1
  2930.  move.l #$dff000,a2       ; Chip-Basisadresse $DFF000
  2931.  move.w (a1),d6
  2932.  lsr.w #1,d6              ; D6 = Screenbreite in Words
  2933.  move.w 2(a1),d7          ; D7 = Screenhöhe
  2934. ;
  2935.  move.w 6(a0),d0          ; Ypos nach D0
  2936.  cmp.w 2(a1),d0           ; If YPos >= Screenhöhe then ende
  2937.  bge po_clipping
  2938.  move.w 10(a0),d1         ; Höhe des Objekts nach D1
  2939.  neg.w d1                 ; negativ machen
  2940.  cmp.w d1,d0              ; If YPos <= D1 then ende
  2941.  ble po_clipping
  2942.  move.w 8(a0),d0          ; X-Pos. nach D0
  2943.  move.w (a1),d1           ; Zeilenbreite in Bytes
  2944.  lsl.w #3,d1              ; mal 8 = Zeilenbreite in Pixel
  2945.  cmp.w d1,d0              ; If XPos >= Zeilenbreite then ende
  2946.  bge po_clipping
  2947.  move.w 12(a0),d1         ; Objektbreite nach D1
  2948.  sub.w #1,d1              ; ein Word abziehen
  2949.  lsl.w #4,d1              ; mal 16 = Breite in Pixel
  2950.  neg.w d1                 ; Objektbreite jetzt negativ
  2951.  cmp.w d1,d0              ; If XPos <= D1 then ende
  2952.  ble po_clipping
  2953. ;
  2954.  cmp.b #1,4(a0)           ; BOBOff ?
  2955.  bne po_bobon
  2956. po_bob_aus:
  2957.  bsr po_writehintergrund
  2958.  clr.b 5(a0)              ; BOB nicht mehr init.
  2959.  rts
  2960. po_bobon:
  2961.  tst.b 4(a0)              ; Objekt normal anschalten ?
  2962.  bne po_bobon_xa
  2963.  bsr po_writehintergrund
  2964.  bsr po_readhintergrund   ; Hintergrund speichern
  2965.  bsr po_writeobjekt       ; Objekt in Hintergrund printen
  2966.  rts                      ; Ende
  2967. po_bobon_xa:
  2968.  cmp.b #2,4(a0)           ; Write BOB only
  2969.  bne po_bobon_xb
  2970.  bsr po_writeobjekt       ; Hintergrund zurückschreiben
  2971.  rts
  2972. po_bobon_xb:
  2973.  cmp.b #3,4(a0)           ; Write Hintergrund only
  2974.  bne po_bobon_xc
  2975.  bsr po_writehintergrund
  2976.  rts
  2977. po_bobon_xc:
  2978.  cmp.b #4,4(a0)           ; Read Hintergrund only
  2979.  bne po_bobon_end
  2980.  bsr po_readhintergrund
  2981. po_bobon_end:
  2982.  rts
  2983. po_clipping:
  2984.  tst.b 4(a0)              ; Objekt normal anschalten ?
  2985.  beq po_bob_aus
  2986.  cmp.b #1,4(a0)
  2987.  beq po_bob_aus
  2988.  cmp.b #3,4(a0)
  2989.  beq po_bob_aus
  2990.  rts
  2991. ;--- Masken/Offset/Blittersize berechnen ---
  2992. ;--- D0 = Y, D1 = X Position ---
  2993. ;--- Rückgabe: D0 = Blitterhöhe, D1 = Blitterbreite  ---
  2994. ;              D2 = PositionOffset, D5 = Shiftwert   ---
  2995. ;              D4 = muß zum Bitmapoffset addiert werden ---
  2996. po_parameter:
  2997.  tst.w d0                ; Y positiv ?
  2998.  bpl po_para_1           ; wenn ja, dann verzweigen
  2999.  move.w 12(a0),d2        ; Breite Objekt Words
  3000.  lsl.w #1,d2             ; in Bytes
  3001.  move.w d0,d3
  3002.  neg.w d3
  3003.  mulu d3,d2
  3004.  add.w 10(a0),d0         ; plus höhe Objekt
  3005.  bra po_para_x
  3006. po_para_1:
  3007.  move.w d7,d2            ; Screenhöhe
  3008.  sub.w d0,d2             ; minus y-pos
  3009.  move.w d2,d0            ; D0 = ergebnis
  3010.  clr.l d2
  3011.  cmp.w 10(a0),d0         ; minus höhe
  3012.  bmi po_para_x           ; negativ ?
  3013.  move.w 10(a0),d0        ; wenn positiv dann normale Height
  3014. po_para_x:           ; D0 = Blitterhöhe , D2 = Y-Offset
  3015.  tst.w d1                ; X positiv ?
  3016.  bpl po_para_2           ; wenn ja, dann verzweigen
  3017.  neg.w d1                ; X-pos jetzt positiv
  3018.  move.w d1,d4            ; x-pos nach D4
  3019.  lsr.w #4,d1             ; durch 16 teilen
  3020.  move.w 12(a0),d5        ; Objektbreite nach D5
  3021.  sub.w d1,d5             ;
  3022.  clr.l d3
  3023.  move.w d1,d3
  3024.  lsl.w #1,d3             ; D3 = X-Offset
  3025.  add.l d3,d2         ; D2 = Position-Offset
  3026.  move.w d5,d1            ; D1 = Blitterbreite
  3027.  and.w #15,d4            ;
  3028.  clr.w d5
  3029.  tst.w d4
  3030.  beq po_para_44
  3031.  move.w #16,d5
  3032.  sub.w d4,d5             ; D5 = real Shiftwert
  3033.  subq.w #1,d4
  3034.  move.w #$ffff,d3
  3035. po_para_shift:
  3036.  lsr.w #1,d3
  3037.  dbra d4,po_para_shift
  3038.  move.w d3,$44(a2)        ; FirstMask
  3039.  move.w d3,$46(a2)
  3040.  cmp.w #1,d1
  3041.  beq po_para_7
  3042.  move.w #$ffff,$46(a2)    ; LastMask
  3043. po_para_7:
  3044.  move.l #2,d4             ; Bitmapoffset -2 Bytes
  3045.  rts
  3046. po_para_2:               ; X-Pos ist positiv
  3047.  move.w d1,d5            ; X-pos nach D5
  3048.  and.w #15,d5            ; D5 = Shiftwert
  3049.  lsr.w #4,d1             ; X-Pos durch 16
  3050.  move.w d6,d4            ; Screenbreite nach D4
  3051.  sub.w d1,d4
  3052.  move.w d4,d1            ; D1 = Blitterbreite
  3053.  cmp.w 12(a0),d1         ; Ergebnis - Objektbreite
  3054.  bmi po_para_3           ; hiernach normal weiter
  3055.  move.w 12(a0),d1        ; Blitterbreite
  3056. po_para_44:
  3057.  move.l #-1,$44(a2)      ; First/LastMask
  3058.  clr.l d4                ; Bitmapoffset + 0 Bytes
  3059.  rts
  3060. po_para_3:
  3061.  tst.w d5
  3062.  beq po_para_44
  3063.  move.w d5,d3
  3064.  subq.w #1,d3
  3065.  move.w #$ffff,d4
  3066. po_para_shifta:
  3067.  lsl.w #1,d4
  3068.  dbra d3,po_para_shifta
  3069.  move.w d4,$44(a2)        ; FirstMask
  3070.  move.w d4,$46(a2)
  3071.  cmp.w #1,d1             ; Blitterbreite = 1
  3072.  beq po_para_4
  3073.  move.w #$ffff,$44(a2)    ; LastMask
  3074. po_para_4:
  3075.  clr.l d4                ; Bitmapoffset + 0 Bytes
  3076.  rts
  3077.  
  3078. ;------ Hintergrund wieder printen ----
  3079. po_writehintergrund:
  3080.  tst.b 5(a0)             ; wurde ein Hintergrund schon gelesen ?
  3081.  bne po_writehg_x
  3082.  rts
  3083. po_writehg_x:
  3084.  move.w (a0),d0          ; OldY
  3085.  move.w 2(a0),d1         ; OldX
  3086.  bsr po_parameter
  3087.  move.l #-1,$44(a2)      ; First/LastMask
  3088.  move.l #$09f00000,$40(a2)     ; BLTCON0/1
  3089.  move.l 24(a0),a3        ; A3 = real Quelle A
  3090.  add.l d2,a3
  3091.  lea 8(a1),a4
  3092.  move.w d6,d5
  3093.  sub.w d1,d5
  3094.  lsl.w #1,d5
  3095.  move.w d5,$66(a2)       ; ZModulo
  3096.  move.w 12(a0),d5
  3097.  sub.w d1,d5
  3098.  lsl.w #1,d5
  3099.  move.w d5,$64(a2)       ; AModulo
  3100.  clr.l d3
  3101.  tst.w 2(a0)
  3102.  bmi po_writehg_nox
  3103.  move.w 2(a0),d3         ; x-pos
  3104.  lsr.w #4,d3
  3105.  lsl.w #1,d3             ; X-Offset
  3106. po_writehg_nox:
  3107.  tst.w (a0)
  3108.  bmi po_writehg_noy
  3109.  move.w (a0),d4
  3110.  mulu d6,d4
  3111.  lsl.l #1,d4             ; Y-Offset
  3112.  add.l d4,d3             ; D3 = Bitmapoffset
  3113. po_writehg_noy:
  3114.  move.w 12(a0),d4
  3115.  mulu 10(a0),d4
  3116.  lsl.l #1,d4             ; D4 = Map-Size vom Objekt
  3117.  clr.w d5
  3118.  move.b 5(a1),d5
  3119.  subq.w #1,d5            ; D5 = Loop-zähler
  3120.  and.w #$3ff,d0           ; Blittersize errechnen
  3121.  lsl.w #6,d0              ; D1 = breite in Words
  3122.  and.w #$3f,d1            ; D0 = höhe in Pixel
  3123.  add.w d0,d1             ; D1 ist jetzt Blittersize
  3124. po_writehg_loop:
  3125.  move.l a3,$50(a2)       ; Quelle A
  3126.  move.l (a4)+,a5
  3127.  add.l d3,a5
  3128.  move.l a5,$54(a2)       ; Ziel D
  3129.  move.w d1,$58(a2)       ; Blitter starten
  3130. po_writehg_wait:
  3131.  dc.w $082a,$000e,$0002        ;btst #14,$2(a2) Bit BBusy testen
  3132.  bne po_writehg_wait     ; wenn Null, dann Blitterende
  3133.  add.l d4,a3
  3134.  dbra d5,po_writehg_loop
  3135.  rts
  3136.  
  3137. ;------ Hintergrund speichern --------
  3138. po_readhintergrund:
  3139.  move.b #1,5(a0)         ; Init = 1, Hintergrund schon mal gelesen
  3140.  move.w 6(a0),0(a0)      ; Ypos nach OldYpos
  3141.  move.w 8(a0),2(a0)      ; Xpos nach OldXpos
  3142.  move.w (a0),d0          ; Y
  3143.  move.w 2(a0),d1         ; X
  3144.  bsr po_parameter
  3145.  move.l #-1,$44(a2)      ; First/LastMask
  3146.  move.l #$09f00000,$40(a2)     ; BLTCON0/1
  3147.  move.l 24(a0),a3        ; A3 = Ziel D
  3148.  add.l d2,a3
  3149.  lea 8(a1),a4
  3150.  move.w d6,d5
  3151.  sub.w d1,d5
  3152.  lsl.w #1,d5
  3153.  move.w d5,$64(a2)       ; AModulo
  3154.  move.w 12(a0),d5
  3155.  sub.w d1,d5
  3156.  lsl.w #1,d5
  3157.  move.w d5,$66(a2)       ; ZModulo
  3158.  clr.l d3
  3159.  tst.w 2(a0)
  3160.  bmi po_readhg_nox
  3161.  move.w 2(a0),d3         ; x-pos
  3162.  lsr.w #4,d3
  3163.  lsl.w #1,d3             ; X-Offset
  3164. po_readhg_nox:
  3165.  tst.w (a0)
  3166.  bmi po_readhg_noy
  3167.  move.w (a0),d4
  3168.  mulu d6,d4
  3169.  lsl.l #1,d4             ; Y-Offset
  3170.  add.l d4,d3             ; D3 = Bitmapoffset
  3171. po_readhg_noy:
  3172.  move.w 12(a0),d4
  3173.  mulu 10(a0),d4
  3174.  lsl.l #1,d4             ; D4 = Map-Size vom Objekt
  3175.  clr.w d5
  3176.  move.b 5(a1),d5
  3177.  subq.w #1,d5            ; D5 = Loop-zähler
  3178.  and.w #$3ff,d0           ; Blittersize errechnen
  3179.  lsl.w #6,d0              ; D1 = breite in Words
  3180.  and.w #$3f,d1            ; D0 = höhe in Pixel
  3181.  add.w d0,d1             ; D1 ist jetzt Blittersize
  3182. po_readhg_loop:
  3183.  move.l a3,$54(a2)       ; Ziel D
  3184.  move.l (a4)+,a5
  3185.  add.l d3,a5
  3186.  move.l a5,$50(a2)       ; Quelle A
  3187.  move.w d1,$58(a2)       ; Blitter starten
  3188. po_readhg_wait:
  3189.  dc.w $082a,$000e,$0002         ; Bit BBusy testen
  3190.  bne po_readhg_wait       ; wenn Null, dann Blitterende
  3191.  add.l d4,a3
  3192.  dbra d5,po_readhg_loop
  3193.  rts
  3194.  
  3195. ;--- Objekt Daten in Bitmap kopieren ---
  3196. po_writeobjekt:
  3197.  move.w 6(a0),d0          ; Y
  3198.  move.w 8(a0),d1          ; X
  3199.  bsr po_parameter
  3200.  lsl.w #8,d5
  3201.  lsl.w #4,d5              ; korekter Shiftwert
  3202.  move.w d5,$42(a2)         ; BLTCON1
  3203.  add.w #$0fca,d5
  3204.  movem.l d5,-(sp)
  3205.  move.w d5,$40(a2)         ; BLTCON0
  3206.  move.l 20(a0),a5
  3207.  add.l d2,a5             ; A5 = Quelle A (real ShadowMask)
  3208.  move.l 16(a0),a3
  3209.  add.l d2,a3             ; A3 = Quelle B (real Image)
  3210.  lea 8(a1),a4
  3211.  move.w d6,d5
  3212.  sub.w d1,d5
  3213.  lsl.w #1,d5
  3214.  move.w d5,$66(a2)       ; ZModulo
  3215.  move.w d5,$60(a2)       ; CModulo
  3216.  move.w 12(a0),d5
  3217.  sub.w d1,d5
  3218.  lsl.w #1,d5
  3219.  move.w d5,$64(a2)       ; AModulo
  3220.  move.w d5,$62(a2)       ; BModulo
  3221.  clr.l d3
  3222.  tst.w 8(a0)
  3223.  bmi po_writeo_nox
  3224.  move.w 8(a0),d3         ; x-pos
  3225.  lsr.w #4,d3
  3226.  lsl.w #1,d3             ; X-Offset
  3227. po_writeo_nox:
  3228.  tst.w 6(a0)
  3229.  bmi po_writeo_noy
  3230.  move.w 6(a0),d5
  3231.  mulu d6,d5
  3232.  lsl.l #1,d5             ; Y-Offset
  3233.  add.l d5,d3             ;
  3234. po_writeo_noy:
  3235.  sub.l d4,d3             ; D3 = Bitmapoffset
  3236.  move.w 12(a0),d4
  3237.  mulu 10(a0),d4
  3238.  lsl.l #1,d4             ; D4 = Map-Size vom Objekt
  3239.  move.w 14(a0),d5
  3240.  subq.w #1,d5            ; D5 = Loop-zähler
  3241.  and.w #$3ff,d0
  3242.  and.w #$3f,d1
  3243.  lsl.w #6,d0             ; D1 = breite in Words
  3244.  add.w d0,d1             ; D1 ist jetzt Blittersize
  3245. po_writeo_loop:
  3246.  move.l a5,$50(a2)       ; Quelle A (ShadowMask)
  3247.  move.l a3,$4c(a2)       ; Quelle B (Image)
  3248.  move.l (a4)+,a6
  3249.  add.l d3,a6
  3250.  move.l a6,$48(a2)       ; Quelle C (BitMap)
  3251.  move.l a6,$54(a2)       ; Ziel   D (BitMap)
  3252.  move.w d1,$58(a2)       ; Blitter starten
  3253. po_writeo_wait:
  3254.  dc.w $082a,$000e,$0002         ; Bit BBusy testen
  3255.  bne po_writeo_wait      ; wenn Null, dann Blitterende
  3256.  add.l d4,a3
  3257.  dbra d5,po_writeo_loop
  3258.  movem.l (sp)+,d5        ; BLTCON0 wert holen
  3259.  move.w 14(a0),d0        ; Depth BOB nach D0
  3260.  cmp.b 5(a1),d0          ; = Anzahl Planes Screen ?
  3261.  beq po_writeo_end       ; Wenn ja, dann Ende
  3262.  sub.b 5(a1),d0          ; Planes-Anzahl abziehen
  3263.  neg.b d0                ; Positiv machen
  3264.  subq.w #1,d0
  3265.  sub.w #$0400,d5         ; DMA-Kanal B = aus
  3266.  move.w d5,$40(a2)       ; BLTCON0
  3267.  clr.w $42(a2)           ; No Shift B
  3268.  clr.w $72(a2)           ; Clear Datenregister B (Figur)
  3269. po_writeo_loop2:
  3270.  move.l a5,$50(a2)       ; Quelle A (ShadowMask)
  3271.  move.l (a4)+,a6
  3272.  add.l d3,a6
  3273.  move.l a6,$48(a2)       ; Quelle C (BitMap)
  3274.  move.l a6,$54(a2)       ; Ziel   D (BitMap)
  3275.  move.w d1,$58(a2)       ; Blitter starten
  3276. po_writeo_wait2:
  3277.  dc.w $082a,$000e,$0002         ; Bit BBusy testen
  3278.  bne po_writeo_wait2     ; wenn Null, dann Blitterende
  3279.  dbra d0,po_writeo_loop2
  3280. po_writeo_end:
  3281.  rts
  3282.  
  3283.  
  3284. ;---- ShadowMask anlegen ----
  3285. ;--- A0 = ObjektArgs, D0 = Memory/CollMask-Zeiger --
  3286. InitMask:
  3287. im_1:
  3288.  move.l #$dff000,a6
  3289.  move.l #$0dfc0000,$40(a6); BLTCON0: A + B = D
  3290.  move.l #-1,$44(a6)       ; First/Last Mask
  3291.  clr.l $62(a6)            ; Modulowert von Quelle B
  3292.  clr.w $66(a6)            ; Modulowert von Ziel   D
  3293.  move.w 12(a0),d5         ; Breite in Words
  3294.  move.w 10(a0),d6         ; Höhe in Pixel
  3295.  move.w d5,d0             ; Breite nach D0
  3296.  lsl.w #1,d0              ; mal 2 = Breite in Bytes
  3297.  mulu d6,d0               ; D0 = ImageMapSize
  3298.  and.w #$3ff,d6           ; Blittersize errechnen
  3299.  lsl.w #6,d6              ; D5 = breite in Words
  3300.  and.w #$3f,d5            ; D6 = höhe in Pixel
  3301.  add.w d6,d5              ; D5 ist jetzt Blittersize
  3302.  move.w 14(a0),d1         ; Anzahl Planes nach D1
  3303.  sub.w #1,d1              ; minus 1, wegen DBra
  3304.  move.l 20(a0),a1         ; A1 = ShadowMask (Ziel D und Quelle B)
  3305.  move.l 16(a0),a2         ; A2 = Image-Zeiger
  3306. initmask_loop:
  3307.  move.l a2,$50(a6)        ; Anfangsadresse von Quelle A
  3308.  move.l a1,$54(a6)        ; Anfangsadresse von Ziel   D
  3309.  move.l a1,$4c(a6)        ; Anfangsadresse von Quelle B = Ziel D
  3310.  move.w d5,$58(a6)        ; BLTSIZE und Blitteroperation starten
  3311. initmask_wait:
  3312.  dc.w $082e,$000e,$0002    ;btst.w #14,$2(a6) Blitter fertig?
  3313.  bne initmask_wait
  3314.  add.l d0,a2              ; nächste ImageMap
  3315.  dbra d1,initmask_loop
  3316.  clr.l d0                 ; No Errors
  3317.  rts
  3318.  
  3319.         ENDC
  3320.  
  3321.         ifne filer__
  3322.  
  3323. _file_req:
  3324.         move.l a0,_arp_strukt
  3325.         move.l _windowhd,_arp_w
  3326.         lea _arp_name,a1
  3327.         moveq #0,d0
  3328.         move.l 4,a6
  3329.         jsr -552(a6)            ;OpenLib
  3330.         tst.l d0
  3331.         beq _fehler
  3332.         move.l d0,a6
  3333.         lea _arp_strukt,a0
  3334.         jsr -294(a6)            ;Requester aufrufen
  3335.  
  3336.         move.l d0,_file_req_ok        ;Speichern oder Abruch
  3337.  
  3338.         move.l a6,a1
  3339.         move.l 4,a6
  3340.         jsr -414(a6)            ;CloseLib
  3341.         cmp.l #0,_file_req_ok
  3342.         beq _file_req5b
  3343.         lea _dir(pc),a0
  3344.         lea _file_name(pc),a1
  3345. _file_req2:
  3346.         move.b (a0)+,d0
  3347.         beq _file_req3
  3348.         move.b d0,(a1)+
  3349.         bra.s _file_req2
  3350. _file_req3:
  3351.         cmp.b #":",-1(a1)
  3352.         beq.s _file_req3b
  3353.         move.b #"/",(a1)+
  3354. _file_req3b:
  3355.         lea _file(pc),a0
  3356.         cmp.b #0,(a0)
  3357.         beq _no_file_name        ;wurde keine Name gewählt
  3358. _file_req4:
  3359.         move.b (a0)+,d0
  3360.         beq _file_req5
  3361.         move.b d0,(a1)+
  3362.         bra.s _file_req4
  3363. _file_req5:
  3364.         move.b #0,(a1)
  3365.         moveq #0,d0
  3366.         rts
  3367. _file_req5b:
  3368.         moveq #1,d0        ;Abruch
  3369.         rts
  3370. _fehler:
  3371.         move.l #-1,d0
  3372.         rts
  3373. _no_file_name:
  3374.         move.l #-1,d0
  3375.         rts
  3376.  
  3377. _file_req_ok:    dc.l 0
  3378. _arp_strukt:
  3379.         dc.l 0
  3380.         dc.l _file
  3381.         dc.l _dir
  3382. _arp_w:        dc.l 0
  3383.         dc.w 0
  3384.         dc.l 1
  3385.         dc.l 1
  3386.  
  3387.  
  3388. _arp_name:    dc.b "arp.library",0
  3389. _file_name:    ds.b 128        ;dir + Filename
  3390. _file:        ds.b 64            ;Filename
  3391. _dir:        ds.b 64            ;Direktory
  3392.  
  3393.         even
  3394.  
  3395.         ENDC
  3396.  
  3397.         ifne auto__
  3398.  
  3399. _ts1:        dc.b 0,1
  3400.         dc.b 0,0
  3401.         dc.w 4
  3402.         dc.w 4
  3403.         dc.l 0
  3404.         dc.l 0
  3405.         dc.l 0
  3406. _ts2:        dc.b 0,1
  3407.         dc.b 0,0
  3408.         dc.w 4
  3409.         dc.w 4
  3410.         dc.l 0
  3411.         dc.l 0
  3412.         dc.l 0
  3413. _ts3:        dc.b 0,1
  3414.         dc.b 0,0
  3415.         dc.w 4
  3416.         dc.w 4
  3417.         dc.l 0
  3418.         dc.l 0
  3419.         dc.l 0
  3420.  
  3421.         ENDC
  3422.  
  3423.         ifne string__
  3424. _cut_str:
  3425.         move.b (a0)+,(a1)+
  3426.         dbra d0,_cut_str
  3427.         move.b #0,(a1)
  3428.         rts
  3429. _instr:
  3430.         move.l a1,a3
  3431. _instr1:
  3432.         move.l a3,a1
  3433.         cmp.b #0,(a0)
  3434.         beq _instr_end0
  3435.         move.b (a1),d0
  3436.         cmp.b (a0)+,d0
  3437.         bne.s _instr1
  3438. _instr2:
  3439.         lea -1(a0),a2
  3440.         lea 1(a1),a1
  3441. _instr3:
  3442.         cmp.b #0,(a1)
  3443.         beq.s _instr_end
  3444.         cmp.b #0,(a0)
  3445.         beq.s _instr_end0
  3446.         cmp.b (a0)+,(a1)+
  3447.         beq.s _instr3
  3448.         bra.s _instr1
  3449. _instr_end:
  3450.         move.l a2,a0
  3451.         rts
  3452. _instr_end0:
  3453.         moveq #-1,d0
  3454.         rts
  3455.  
  3456. _len:
  3457.         moveq #-1,d0
  3458. _len2:
  3459.         add.l #1,d0
  3460.         cmp.b #0,(a0)+
  3461.         bne.s _len2
  3462.         rts
  3463. _right_str:
  3464.         move.l a0,a2
  3465. _right_str2:
  3466.         cmp.b #0,(a0)+
  3467.         bne.s _right_str2
  3468.         lea -1(a0),a0
  3469.         add.l d0,a1
  3470.         lea 1(a1),a1
  3471.         move.b #0,1(a1)
  3472. _right_str3:
  3473.         cmp.l a0,a2
  3474.         beq.s _right_str4
  3475.         move.b -(a0),-(a1)
  3476.         dbra d0,_right_str3
  3477. _right_str4:
  3478.         rts
  3479.  
  3480. _left_str:
  3481.         move.b (a0)+,d1
  3482.         beq.s _left_str2
  3483.         move.b d1,(a1)+
  3484.         dbra d0,_left_str
  3485.         move.b #0,(a1)
  3486. _left_str2:    rts
  3487.  
  3488. _lower_str:
  3489.         move.b #"A"-"a",d0
  3490. _lower_str2:
  3491.         cmp.b #0,(a0)+
  3492.         beq.s _lower_str_end
  3493.         cmp.b #"A",-1(a0)
  3494.         blt.s _lower_str2
  3495.         cmp.b #"Z",-1(a0)
  3496.         bgt.s _lower_str2
  3497.         sub.b d0,-1(a0)
  3498.         bra.s _lower_str2
  3499. _lower_str_end:
  3500.         rts
  3501. _upper_str:
  3502.         move.b #"A"-"a",d0
  3503. _upper_str2:
  3504.         cmp.b #0,(a0)+
  3505.         beq.s _upper_str_end
  3506.         cmp.b #"a",-1(a0)
  3507.         blt.s _upper_str2
  3508.         cmp.b #"z",-1(a0)
  3509.         bgt.s _upper_str2
  3510.         add.b d0,-1(a0)
  3511.         bra.s _upper_str2
  3512. _upper_str_end:
  3513.         rts
  3514.         ENDC
  3515.